<?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>207446</bug_id>
          
          <creation_ts>2020-02-09 16:06:13 -0800</creation_ts>
          <short_desc>Web Inspector: request interception</short_desc>
          <delta_ts>2022-04-22 16:10:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=213252</see_also>
          <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>
          
          <blocked>217031</blocked>
    
    <blocked>217032</blocked>
    
    <blocked>226661</blocked>
    
    <blocked>239674</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>Lawrence.j</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1616716</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-02-09 16:06:13 -0800</bug_when>
    <thetext>Local overrides look exciting!

As I understand, the corresponding request is still made though and I was wondering if there is any interest in intercepting requests along with the responses. That&apos;s what we typically do in automation - you often need to mock services, ads and third party content and there is no way you can send those requests over the network.

Here is what I&apos;ve done for Playwright: https://github.com/pavelfeldman/webkit/commit/7a22960724114e2ba1d850515b1cd7360c524ca2 and I&apos;d be happy to see it upstream in a shape and form that makes sense to you. The changes themselves are very local as seen in the patch, note that I&apos;ve followed up and polished it in some subsequent patches. It should still give you a great idea on the changes necessary.

Here is what happened to the protocol. If you are interested in seeing it upstream, that&apos;s what we would need to discuss first. Looking forward to your response!

Network domain commands:
{
    &quot;name&quot;: &quot;setInterceptionEnabled&quot;,
    &quot;description&quot;: &quot;Enable interception of network requests.&quot;,
    &quot;parameters&quot;: [
        { &quot;name&quot;: &quot;enabled&quot;, &quot;type&quot;: &quot;boolean&quot; },
        { &quot;name&quot;: &quot;interceptRequests&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;optional&quot;: true }
    ]
},
{
    &quot;name&quot;: &quot;interceptContinue&quot;,
    &quot;description&quot;: &quot;Continue an interception with no modifications.&quot;,
    &quot;parameters&quot;: [
        { &quot;name&quot;: &quot;requestId&quot;, &quot;$ref&quot;: &quot;RequestId&quot;, &quot;description&quot;: &quot;Identifier for the intercepted Network request or response to continue.&quot; },
        { &quot;name&quot;: &quot;method&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true,&quot;description&quot;: &quot;HTTP request method to use for this request&quot; },
        { &quot;name&quot;: &quot;headers&quot;, &quot;$ref&quot;: &quot;Headers&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;HTTP response headers to use instead of the original ones for request&quot; },
        { &quot;name&quot;: &quot;postData&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;HTTP post data to use instead of the original ones for request&quot; }
    ]
},
{
    &quot;name&quot;: &quot;interceptAsError&quot;,
    &quot;description&quot;: &quot;Abort the intercepted request with a given reason.&quot;,
    &quot;parameters&quot;: [
        { &quot;name&quot;: &quot;requestId&quot;, &quot;$ref&quot;: &quot;RequestId&quot;, &quot;description&quot;: &quot;Identifier for the intercepted Network request.&quot; },
        { &quot;name&quot;: &quot;reason&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Deliver error reason for the request.&quot; }
    ]
},
{
    &quot;name&quot;: &quot;interceptWithResponse&quot;,
    &quot;description&quot;: &quot;Provide response content for an intercepted request without making the network call.&quot;,
    &quot;parameters&quot;: [
        { &quot;name&quot;: &quot;requestId&quot;, &quot;$ref&quot;: &quot;RequestId&quot;, &quot;description&quot;: &quot;Identifier for the intercepted Network request to modify.&quot; },
        { &quot;name&quot;: &quot;content&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true },
        { &quot;name&quot;: &quot;base64Encoded&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;True, if content was sent as base64.&quot; },
        { &quot;name&quot;: &quot;mimeType&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;MIME Type for the data.&quot; },
        { &quot;name&quot;: &quot;status&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;HTTP response status code. Pass through original values if unmodified.&quot; },
        { &quot;name&quot;: &quot;statusText&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;HTTP response status text. Pass through original values if unmodified.&quot; },
        { &quot;name&quot;: &quot;headers&quot;, &quot;$ref&quot;: &quot;Headers&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;HTTP response headers. Pass through original values if unmodified.&quot; }
    ]
}

Network domain events:

{
    &quot;name&quot;: &quot;requestIntercepted&quot;,
    &quot;description&quot;: &quot;Fired when HTTP request has been intercepted. The frontend must response with &lt;code&gt;Network.interceptWithError&lt;/code&gt;, &lt;code&gt;Network.interceptContinue&lt;/code&gt; or &lt;code&gt;Network.interceptWithRespons&lt;/code&gt;` to proceed with this response.&quot;,
    &quot;parameters&quot;: [
        { &quot;name&quot;: &quot;requestId&quot;, &quot;$ref&quot;: &quot;RequestId&quot;, &quot;description&quot;: &quot;Identifier for this intercepted network. Corresponds with an earlier &lt;code&gt;Network.requestWillBeSent&lt;/code&gt;.&quot; },
        { &quot;name&quot;: &quot;request&quot;, &quot;$ref&quot;: &quot;Request&quot;, &quot;description&quot;: &quot;Original request content that would proceed if this is continued as is.&quot; }
    ]
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622752</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-02-25 14:13:50 -0800</bug_when>
    <thetext>We already have some of those commands (namely `Network.setInterceptionEnabled` and `Network.interceptWithResponse`).  Our initial design was to add a `&quot;request&quot;` value to `Network.NetworkStage` and likely a `Network.requestIntercepted` event and `Network.interceptWithRequest` command.

Suffice to say, yes we&apos;re interested in adding request interception :)

For more info about our current functionality/capabilities, you can read &lt;https://webkit.org/web-inspector/local-overrides/&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624302</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-02-29 10:06:57 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment #1)
&gt; We already have some of those commands (namely
&gt; `Network.setInterceptionEnabled` and `Network.interceptWithResponse`).

I understand this and the fragment of the protocol above is on top of what you have. For example, it adds an &apos;interceptRequests&apos; bit to the existing Network.setInterceptionEnabled. And it reuses the same Network.interceptWithResponse when client wants to fulfill request with the response.

&gt;  Our initial design was to add a `&quot;request&quot;` value to `Network.NetworkStage` and
&gt; likely a `Network.requestIntercepted` event

Yes, Network.requestIntercepted is exactly what I added in our fork.

&gt; and `Network.interceptWithRequest` command.

This is something we called `Network.interceptContinue` in the protocol snippet. It allows augmenting method, headers and post data, but does not allow changing the target URL. Doing that would require serious surgery in the CachedResource, etc.

&gt; Suffice to say, yes we&apos;re interested in adding request interception :)
&gt; 

Sounds perfect.

&gt; For more info about our current functionality/capabilities, you can read
&gt; &lt;https://webkit.org/web-inspector/local-overrides/&gt;.

I surely did. If you are Ok roughly with the protocol changes outlined in my comment (and it sounds like you are), I am happy to attach the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624368</commentid>
    <comment_count>3</comment_count>
      <attachid>392092</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-02-29 21:46:04 -0800</bug_when>
    <thetext>Created attachment 392092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624369</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-02-29 21:47:19 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624391</commentid>
    <comment_count>5</comment_count>
      <attachid>392099</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-03-01 10:07:49 -0800</bug_when>
    <thetext>Created attachment 392099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624608</commentid>
    <comment_count>6</comment_count>
      <attachid>392099</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-03-02 10:45:23 -0800</bug_when>
    <thetext>Comment on attachment 392099
Patch

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

Overall, I like the direction that this is going :)

I didn&apos;t dive too much into the code, as most of my comments are about the design.

As far as the protocol, I&apos;d prefer if we kept request interception and response interception sort of distinct from each other (e.g. separate `interceptWithResponse` and `interceptWithRequest`) for the reasons that I&apos;ve outlined.

As far as the implementation, I&apos;d really like to mimic the existing logic/flow of response interception, as I think that code was really clean and was minimally invasive to any of the existing code. as well as conforming to many existing patterns throughout WebCore/WebKit.

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:241
&gt; +                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;URL pattern to intercept, intercept everything if not specified or empty&quot; },

This seems extremely wasteful and not desired, as now every single network request/response will need to be delayed until the frontend has had a chance to decide what to do, which is most of the time going to be &quot;continue with no changes&quot;.

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:259
&gt; +            &quot;description&quot;: &quot;Continue an interception with or without modifications.&quot;,

I don&apos;t like the idea of allowing modifications inside this command.  If modifications are desired, they should be done inside `interceptWithResponse` (or `interceptWithRequest`).  Our design is that the request/response should either be completely untouched or completely replaced.  We&apos;d like to keep it that way.

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:268
&gt; +            &quot;name&quot;: &quot;interceptAsError&quot;,

Can&apos;t this already be achieved with `interceptWIthResponse`?  Why does it need a separate command?

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:364
&gt; +            &quot;description&quot;: &quot;Fired when HTTP request has been intercepted. The frontend must respond with &lt;code&gt;Network.interceptAsError&lt;/code&gt;, &lt;code&gt;Network.interceptContinue&lt;/code&gt; or &lt;code&gt;Network.interceptWithResponse&lt;/code&gt;` to resolve this request.&quot;,

I&apos;d prefer to have a separate `interceptWIthRequest`, as we will likely have a different set of things that can be modified (e.g. `method` vs `status`).

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:1293
&gt; +    if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())

NIT: `auto`?

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:321
&gt; +    static bool interceptRequest(ResourceLoader&amp;, Function&lt;void(bool handled)&gt;&amp;&amp;);

Please move this to be right above `interceptResponse` (also move it in the .cpp).

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:523
&gt; +    static bool interceptRequestImpl(InstrumentingAgents&amp;, ResourceLoader&amp;, Function&lt;void(bool handled)&gt;&amp;&amp;);

Ditto (321)

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:1688
&gt; +    if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(loader.frame()))

NIT: `auto`?

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:237
&gt; +            &amp;&amp; InspectorInstrumentationWebKit::interceptRequest(resourceLoader, [this, protectedResourceLoader, trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, resource](bool handled) mutable {

Style: I don&apos;t think we like having a lambda inside an `if`.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:238
&gt; +                if (!handled)

I don&apos;t really like this `handled` approach.  I&apos;d prefer if you mimicked the logic of `interceptResponse` (e.g. a `CompletionHandler&lt;const ResourceRequest&amp;&gt;` that replaces the `protectedResourceLoader-&gt;request()` but still calls `scheduleLoadFromNetworkProcess`).  I don&apos;t think we want request interception to completely ignore this logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624814</commentid>
    <comment_count>7</comment_count>
      <attachid>392099</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-03-02 16:14:45 -0800</bug_when>
    <thetext>Comment on attachment 392099
Patch

Thank you for the review!

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

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:241
&gt;&gt; +                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;URL pattern to intercept, intercept everything if not specified or empty&quot; },
&gt; 
&gt; This seems extremely wasteful and not desired, as now every single network request/response will need to be delayed until the frontend has had a chance to decide what to do, which is most of the time going to be &quot;continue with no changes&quot;.

That would only happen when you decide to specify no URL at all. I can leave it as required, no problem. But in reality, all the automation frameworks will be setting &quot;.*&quot; regex and we will be running JSC&apos;s regex engine for no good reason.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:259
&gt;&gt; +            &quot;description&quot;: &quot;Continue an interception with or without modifications.&quot;,
&gt; 
&gt; I don&apos;t like the idea of allowing modifications inside this command.  If modifications are desired, they should be done inside `interceptWithResponse` (or `interceptWithRequest`).  Our design is that the request/response should either be completely untouched or completely replaced.  We&apos;d like to keep it that way.

I like the idea of &quot;completely the same or completely replaced&quot;. But I don&apos;t think this can be (easily) achieved due to the CachedResource / ResourceRequest coupling. Do you have an idea on where this can be intercepted without swapping the CachedResource::m_resourceRequest?

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:268
&gt;&gt; +            &quot;name&quot;: &quot;interceptAsError&quot;,
&gt; 
&gt; Can&apos;t this already be achieved with `interceptWIthResponse`?  Why does it need a separate command?

This can be done. But it would make every parameter of that method optional and will lead to a lot of run-time checks (error-prone).

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:364
&gt;&gt; +            &quot;description&quot;: &quot;Fired when HTTP request has been intercepted. The frontend must respond with &lt;code&gt;Network.interceptAsError&lt;/code&gt;, &lt;code&gt;Network.interceptContinue&lt;/code&gt; or &lt;code&gt;Network.interceptWithResponse&lt;/code&gt;` to resolve this request.&quot;,
&gt; 
&gt; I&apos;d prefer to have a separate `interceptWIthRequest`, as we will likely have a different set of things that can be modified (e.g. `method` vs `status`).

Do you mean `interceptContinue` is used for response and a new `interceptWithRequest` is used to set the method? That sounds good.

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:237
&gt;&gt; +            &amp;&amp; InspectorInstrumentationWebKit::interceptRequest(resourceLoader, [this, protectedResourceLoader, trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, resource](bool handled) mutable {
&gt; 
&gt; Style: I don&apos;t think we like having a lambda inside an `if`.

Do you suggest splitting this code into bool foo = and if (foo) or do you want to see ::shouldInterceptRequest here?

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:238
&gt;&gt; +                if (!handled)
&gt; 
&gt; I don&apos;t really like this `handled` approach.  I&apos;d prefer if you mimicked the logic of `interceptResponse` (e.g. a `CompletionHandler&lt;const ResourceRequest&amp;&gt;` that replaces the `protectedResourceLoader-&gt;request()` but still calls `scheduleLoadFromNetworkProcess`).  I don&apos;t think we want request interception to completely ignore this logic.

This all boils down to the feasibility of request swap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626391</commentid>
    <comment_count>8</comment_count>
      <attachid>392099</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-03-05 16:38:52 -0800</bug_when>
    <thetext>Comment on attachment 392099
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:259
&gt;&gt;&gt; +            &quot;description&quot;: &quot;Continue an interception with or without modifications.&quot;,
&gt;&gt; 
&gt;&gt; I don&apos;t like the idea of allowing modifications inside this command.  If modifications are desired, they should be done inside `interceptWithResponse` (or `interceptWithRequest`).  Our design is that the request/response should either be completely untouched or completely replaced.  We&apos;d like to keep it that way.
&gt; 
&gt; I like the idea of &quot;completely the same or completely replaced&quot;. But I don&apos;t think this can be (easily) achieved due to the CachedResource / ResourceRequest coupling. Do you have an idea on where this can be intercepted without swapping the CachedResource::m_resourceRequest?

I don&apos;t understand what you mean by &quot;CachedResource / ResourceRequest coupling&quot;.  What I described is how response interception works right now.  In `InspectorNetworkAgent::interceptWithResponse`, we create our own `ResourceResponse` and set the data as required.  Why is `CachedResource` involved at all?

&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:268
&gt;&gt;&gt; +            &quot;name&quot;: &quot;interceptAsError&quot;,
&gt;&gt; 
&gt;&gt; Can&apos;t this already be achieved with `interceptWIthResponse`?  Why does it need a separate command?
&gt; 
&gt; This can be done. But it would make every parameter of that method optional and will lead to a lot of run-time checks (error-prone).

All of the parameters for `Network.interceptWithResponse` are already optional.  I&apos;d rather not have unnecessary commands.

&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:364
&gt;&gt;&gt; +            &quot;description&quot;: &quot;Fired when HTTP request has been intercepted. The frontend must respond with &lt;code&gt;Network.interceptAsError&lt;/code&gt;, &lt;code&gt;Network.interceptContinue&lt;/code&gt; or &lt;code&gt;Network.interceptWithResponse&lt;/code&gt;` to resolve this request.&quot;,
&gt;&gt; 
&gt;&gt; I&apos;d prefer to have a separate `interceptWIthRequest`, as we will likely have a different set of things that can be modified (e.g. `method` vs `status`).
&gt; 
&gt; Do you mean `interceptContinue` is used for response and a new `interceptWithRequest` is used to set the method? That sounds good.

Here&apos;s what we had in mind originally:

Commands:
 - `Network.interceptContinue` is the way that the frontend tells the backend to let an intercepted request/response proceed unmodified
 - `Network.interceptWithRequest` is the way for the frontend to entirely replace request data for an intercepted request
 - `Network.interceptWithResponse` is the way for the frontend to entirely replace response data for an intercepted response

Events:
 - `Network.requestIntercepted` is how the frontend is notified when a request is intercepted
 - `Network.responseIntercepted` is how the frontend is notified when a response is intercepted

This way, the paths for request and response interception are almost entirely separate (the only exceptions being the `Network.setInterceptionEnabled`/`Network.addInterception`/`Network.removeInterception` commands and `Network.interceptContinue`, since none of those actually modify any request/response).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652126</commentid>
    <comment_count>9</comment_count>
      <attachid>399242</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-12 22:46:16 -0700</bug_when>
    <thetext>Created attachment 399242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652127</commentid>
    <comment_count>10</comment_count>
      <attachid>392099</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-12 22:48:37 -0700</bug_when>
    <thetext>Comment on attachment 392099
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:241
&gt;&gt;&gt; +                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;URL pattern to intercept, intercept everything if not specified or empty&quot; },
&gt;&gt; 
&gt;&gt; This seems extremely wasteful and not desired, as now every single network request/response will need to be delayed until the frontend has had a chance to decide what to do, which is most of the time going to be &quot;continue with no changes&quot;.
&gt; 
&gt; That would only happen when you decide to specify no URL at all. I can leave it as required, no problem. But in reality, all the automation frameworks will be setting &quot;.*&quot; regex and we will be running JSC&apos;s regex engine for no good reason.

Done.

&gt;&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:259
&gt;&gt;&gt;&gt; +            &quot;description&quot;: &quot;Continue an interception with or without modifications.&quot;,
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t like the idea of allowing modifications inside this command.  If modifications are desired, they should be done inside `interceptWithResponse` (or `interceptWithRequest`).  Our design is that the request/response should either be completely untouched or completely replaced.  We&apos;d like to keep it that way.
&gt;&gt; 
&gt;&gt; I like the idea of &quot;completely the same or completely replaced&quot;. But I don&apos;t think this can be (easily) achieved due to the CachedResource / ResourceRequest coupling. Do you have an idea on where this can be intercepted without swapping the CachedResource::m_resourceRequest?
&gt; 
&gt; I don&apos;t understand what you mean by &quot;CachedResource / ResourceRequest coupling&quot;.  What I described is how response interception works right now.  In `InspectorNetworkAgent::interceptWithResponse`, we create our own `ResourceResponse` and set the data as required.  Why is `CachedResource` involved at all?

Done.

&gt;&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:268
&gt;&gt;&gt;&gt; +            &quot;name&quot;: &quot;interceptAsError&quot;,
&gt;&gt;&gt; 
&gt;&gt;&gt; Can&apos;t this already be achieved with `interceptWIthResponse`?  Why does it need a separate command?
&gt;&gt; 
&gt;&gt; This can be done. But it would make every parameter of that method optional and will lead to a lot of run-time checks (error-prone).
&gt; 
&gt; All of the parameters for `Network.interceptWithResponse` are already optional.  I&apos;d rather not have unnecessary commands.

Done.

&gt;&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:364
&gt;&gt;&gt;&gt; +            &quot;description&quot;: &quot;Fired when HTTP request has been intercepted. The frontend must respond with &lt;code&gt;Network.interceptAsError&lt;/code&gt;, &lt;code&gt;Network.interceptContinue&lt;/code&gt; or &lt;code&gt;Network.interceptWithResponse&lt;/code&gt;` to resolve this request.&quot;,
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;d prefer to have a separate `interceptWIthRequest`, as we will likely have a different set of things that can be modified (e.g. `method` vs `status`).
&gt;&gt; 
&gt;&gt; Do you mean `interceptContinue` is used for response and a new `interceptWithRequest` is used to set the method? That sounds good.
&gt; 
&gt; Here&apos;s what we had in mind originally:
&gt; 
&gt; Commands:
&gt;  - `Network.interceptContinue` is the way that the frontend tells the backend to let an intercepted request/response proceed unmodified
&gt;  - `Network.interceptWithRequest` is the way for the frontend to entirely replace request data for an intercepted request
&gt;  - `Network.interceptWithResponse` is the way for the frontend to entirely replace response data for an intercepted response
&gt; 
&gt; Events:
&gt;  - `Network.requestIntercepted` is how the frontend is notified when a request is intercepted
&gt;  - `Network.responseIntercepted` is how the frontend is notified when a response is intercepted
&gt; 
&gt; This way, the paths for request and response interception are almost entirely separate (the only exceptions being the `Network.setInterceptionEnabled`/`Network.addInterception`/`Network.removeInterception` commands and `Network.interceptContinue`, since none of those actually modify any request/response).

Done with the modification: user is still able to issue `Network.interceptWithResponse` upon `Network.requestIntercepted`. This is the single most useful scenario and I don&apos;t think the contract that you suggest above supports it. We need a mode where front-end simply fulfills the request and there is no actual network activity going on.

&gt;&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:1293
&gt;&gt; +    if (InspectorNetworkAgent* networkAgent = instrumentingAgents.inspectorNetworkAgent())
&gt; 
&gt; NIT: `auto`?

Done

&gt;&gt; Source/WebCore/inspector/InspectorInstrumentation.h:321
&gt;&gt; +    static bool interceptRequest(ResourceLoader&amp;, Function&lt;void(bool handled)&gt;&amp;&amp;);
&gt; 
&gt; Please move this to be right above `interceptResponse` (also move it in the .cpp).

Done

&gt;&gt; Source/WebCore/inspector/InspectorInstrumentation.h:523
&gt;&gt; +    static bool interceptRequestImpl(InstrumentingAgents&amp;, ResourceLoader&amp;, Function&lt;void(bool handled)&gt;&amp;&amp;);
&gt; 
&gt; Ditto (321)

Done

&gt;&gt; Source/WebCore/inspector/InspectorInstrumentation.h:1688
&gt;&gt; +    if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForFrame(loader.frame()))
&gt; 
&gt; NIT: `auto`?

Done

&gt;&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:237
&gt;&gt;&gt; +            &amp;&amp; InspectorInstrumentationWebKit::interceptRequest(resourceLoader, [this, protectedResourceLoader, trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, resource](bool handled) mutable {
&gt;&gt; 
&gt;&gt; Style: I don&apos;t think we like having a lambda inside an `if`.
&gt; 
&gt; Do you suggest splitting this code into bool foo = and if (foo) or do you want to see ::shouldInterceptRequest here?

Done.

&gt;&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:238
&gt;&gt;&gt; +                if (!handled)
&gt;&gt; 
&gt;&gt; I don&apos;t really like this `handled` approach.  I&apos;d prefer if you mimicked the logic of `interceptResponse` (e.g. a `CompletionHandler&lt;const ResourceRequest&amp;&gt;` that replaces the `protectedResourceLoader-&gt;request()` but still calls `scheduleLoadFromNetworkProcess`).  I don&apos;t think we want request interception to completely ignore this logic.
&gt; 
&gt; This all boils down to the feasibility of request swap.

I still have this implicit handled flag due to ability to fulfill request right away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652128</commentid>
    <comment_count>11</comment_count>
      <attachid>399243</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-12 22:51:51 -0700</bug_when>
    <thetext>Created attachment 399243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652242</commentid>
    <comment_count>12</comment_count>
      <attachid>392099</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-05-13 08:43:11 -0700</bug_when>
    <thetext>Comment on attachment 392099
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:364
&gt;&gt;&gt;&gt;&gt; +            &quot;description&quot;: &quot;Fired when HTTP request has been intercepted. The frontend must respond with &lt;code&gt;Network.interceptAsError&lt;/code&gt;, &lt;code&gt;Network.interceptContinue&lt;/code&gt; or &lt;code&gt;Network.interceptWithResponse&lt;/code&gt;` to resolve this request.&quot;,
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I&apos;d prefer to have a separate `interceptWIthRequest`, as we will likely have a different set of things that can be modified (e.g. `method` vs `status`).
&gt;&gt;&gt; 
&gt;&gt;&gt; Do you mean `interceptContinue` is used for response and a new `interceptWithRequest` is used to set the method? That sounds good.
&gt;&gt; 
&gt;&gt; Here&apos;s what we had in mind originally:
&gt;&gt; 
&gt;&gt; Commands:
&gt;&gt;  - `Network.interceptContinue` is the way that the frontend tells the backend to let an intercepted request/response proceed unmodified
&gt;&gt;  - `Network.interceptWithRequest` is the way for the frontend to entirely replace request data for an intercepted request
&gt;&gt;  - `Network.interceptWithResponse` is the way for the frontend to entirely replace response data for an intercepted response
&gt;&gt; 
&gt;&gt; Events:
&gt;&gt;  - `Network.requestIntercepted` is how the frontend is notified when a request is intercepted
&gt;&gt;  - `Network.responseIntercepted` is how the frontend is notified when a response is intercepted
&gt;&gt; 
&gt;&gt; This way, the paths for request and response interception are almost entirely separate (the only exceptions being the `Network.setInterceptionEnabled`/`Network.addInterception`/`Network.removeInterception` commands and `Network.interceptContinue`, since none of those actually modify any request/response).
&gt; 
&gt; Done with the modification: user is still able to issue `Network.interceptWithResponse` upon `Network.requestIntercepted`. This is the single most useful scenario and I don&apos;t think the contract that you suggest above supports it. We need a mode where front-end simply fulfills the request and there is no actual network activity going on.

Your modification doesn&apos;t make sense to me.  Having a request be intercepted with a response seems wrong.  If you plan on overriding the response, then why does it matter whether or not the request goes out over the network?  The request could completely fail and it wouldn&apos;t matter because the response would be entirely replaced with the pre-configured one.

&gt;&gt;&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:238
&gt;&gt;&gt;&gt; +                if (!handled)
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t really like this `handled` approach.  I&apos;d prefer if you mimicked the logic of `interceptResponse` (e.g. a `CompletionHandler&lt;const ResourceRequest&amp;&gt;` that replaces the `protectedResourceLoader-&gt;request()` but still calls `scheduleLoadFromNetworkProcess`).  I don&apos;t think we want request interception to completely ignore this logic.
&gt;&gt; 
&gt;&gt; This all boils down to the feasibility of request swap.
&gt; 
&gt; I still have this implicit handled flag due to ability to fulfill request right away.

Can&apos;t that be done by having a `CompletionHandler` be invoked immediately?  FWIW, i would expect that if this code is reached, Web Inspector is guaranteed to replace the request as otherwise the `InspectorInstrumentation` check was wrong (which is bad).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652407</commentid>
    <comment_count>13</comment_count>
      <attachid>399304</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-13 15:20:24 -0700</bug_when>
    <thetext>Created attachment 399304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652408</commentid>
    <comment_count>14</comment_count>
      <attachid>399305</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-13 15:29:42 -0700</bug_when>
    <thetext>Created attachment 399305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652842</commentid>
    <comment_count>15</comment_count>
      <attachid>399243</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-05-14 15:57:21 -0700</bug_when>
    <thetext>Comment on attachment 399243
Patch

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

r-, this needs a _lot_ more tests
 - intercept/override URL defined in HTML
 - intercept/override URL defined in CSS
 - test `method` parameter of `interceptWithRequest`
 - test `headers` parameter of `interceptWithRequest`
 - test `postData` parameter of `interceptWithRequest`
there are a _lot_ of different situations/configurations for request interception, and we should have at least one test per.

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:247
&gt; +                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;URL pattern to intercept, intercept everything if not specified or empty&quot; },

I am still not comfortable with this &quot;intercept everything&quot; concept.  I don&apos;t think that there&apos;s a good way to make a UI for this.  Network interception should be a whitelist not a let-me-decide catch-all.

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:276
&gt; +                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true,&quot;description&quot;: &quot;HTTP request url.&quot; },

I&apos;m not sure I like this idea.  This is really more of a redirect rather than an override.

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:278
&gt; +                { &quot;name&quot;: &quot;postData&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;HTTP POST request data, base64-encoded.&quot; }

Why is this _always_ base64-encoded?  That should probably be another parameter, assuming it even needs to exist at all.

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:292
&gt; +                { &quot;name&quot;: &quot;errorType&quot;, &quot;$ref&quot;: &quot;ResourceErrorType&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Deliver error reason for the request failure.&quot; }

Where did this come from?  How is it related to _request_ interception?  It seems like you&apos;re trying to expose a way to modify internal state/concepts via the inspector protocol, which is not really something I think Web Inspector wants to do.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1054
&gt; +void InspectorNetworkAgent::addInterception(ErrorString&amp; errorString, const String&amp; url, const bool* optionalCaseSensitive, const bool* optionalIsRegex, const String* optionalNetworkStageString)

The `NetworkStage` actually probably shouldn&apos;t be optional.  What would not specifying a `NetworkStage` even mean?  The only thing that makes sense to me would be for not specifying a `NetworkStage` to mean &quot;intercept at every point&quot;, but for reasons i&apos;ve mentioned i don&apos;t see why that&apos;s needed/wanted.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1125
&gt; +    String requestId = IdentifiersFactory::requestId(loader.identifier());

We should double-check that the `requestId` isn&apos;t already in `m_pendingInterceptRequests`, and if so invoke the `handler` and return.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1126
&gt; +    auto pendingRequest = makeUnique&lt;PendingInterceptRequest&gt;(&amp;loader, WTFMove(handler));

You could just inline this and avoid the `WTFMove(pendingRequest)`.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1148
&gt;  void InspectorNetworkAgent::interceptContinue(ErrorString&amp; errorString, const String&amp; requestId)

This should also probably take a `NetworkStage` so that we know whether we&apos;re trying to continue the request or the response (also see :1054).

Alternatively, we could add an `InterceptId` that makes this even more clear, but I think the combo of `RequestId` + `NetworkStage` is probably unique enough.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1167
&gt; +    auto pendingRequest = m_pendingInterceptRequests.take(requestId);

I think this should really be a completely separate command so as to not conflate things, like `interceptRequestWithImmediateResponse`.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1169
&gt; +        ResourceLoader* loader = pendingRequest-&gt;m_loader.get();

`auto`?

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1175
&gt; +        ResourceRequest request = loader-&gt;request();

Ditto (:1169)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1182
&gt; +            for (auto&amp; header : *headers) {

NIT: you could use structured binding
```
    for (auto&amp; [key, value] : *headers)
```

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1194
&gt; +            }

Style: missing newline after block containing `return`

(rest of file too)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1195
&gt; +            }
&gt; +            Ref&lt;FormData&gt; data = FormData::create(buffer);

Ditto (:1169), or could even just inline it to avoid the `WTFMove(data)`.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1208
&gt; +    if (pendingRequest &amp;&amp; errorTypeString) {

all of these `if`s could be nested under a shared `if (pendingRequest)`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1252
&gt; +        if (base64Encoded &amp;&amp; *base64Encoded &amp;&amp; content) {

NIT: you could next these two `if`s under a shared `if (content &amp;&amp; !content-&gt;isEmpty())`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1263
&gt; +        ResourceResponse response(pendingRequest-&gt;m_loader-&gt;url(), *mimeType, data-&gt;size(), String());

`data` is not guaranteed to exist

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1275
&gt; +        loader-&gt;didReceiveResponse(response, [loader, data = data.releaseNonNull()]() mutable {

Replacing something with its own name is not the easiest to read.  Also, `data` is not guaranteed to exist, which `RefPtr::releaseNonNull` expects.  It should probably either just be a regular `&amp;data` capture or a `buffer = WTFMove(data)`.

Why does this need to be `mutable`?

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.h:226
&gt; +        NetworkStage networkStage { NetworkStage::Response };

Ditto (InspectorNetworkAgent.cpp:1054)

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:240
&gt; +        RefPtr&lt;ResourceLoader&gt; protectedResourceLoader = &amp;resourceLoader;

This is normally done as part of the lambda capture.
```
    [protectedResourceLoader = makeRef(resourceLoader)]
```

&gt; LayoutTests/inspector/network/intercept-request.html:10
&gt; +        const response = await fetch(&apos;resources/data.json&apos;);

Style: we only use `const` for values that never change between executions (i.e. an actual constant), which is not the case here, so please use `let`

(rest of file too)

&gt; LayoutTests/inspector/network/intercept-request.html:16
&gt; +            header: response.headers.get(&apos;my-header&apos;)

Style: missing trailing comma

(rest of file too)

&gt; LayoutTests/inspector/network/intercept-request.html:23
&gt; +async function test()

Please don&apos;t make the `test` function `async`.  The test harness doesn&apos;t really support `async` functions.  Our usual pattern is to set up the entire test suite and then put the `runTestCasesAndFinish` call in the callback.

&gt; LayoutTests/inspector/network/intercept-request.html:25
&gt; +    let suite = ProtocolTest.createAsyncSuite(&quot;Network.setInterceptionEnabled&quot;);

Oops?

&gt; LayoutTests/inspector/network/intercept-request.html:27
&gt; +    const [, , {result}] = await Promise.all([

Even if it&apos;s not used, I&apos;d rather give a name to each item so that I don&apos;t have to read the code to figure out what is being &quot;skipped&quot;

(rest of file too)

&gt; LayoutTests/inspector/network/intercept-request.html:43
&gt; +        name: &quot;requestIntercepted.interceptContinue&quot;,

NIT: I like to prefix each test case name with the test suite&apos;s name so that the relationship is clear

&gt; LayoutTests/inspector/network/intercept-request.html:48
&gt; +                InspectorProtocol.awaitCommand({method: &quot;Runtime.evaluate&quot;, params: {

This is definitely not our style.  Usually we only inline objects if there are only a few simple values (e.g. numbers, strings, etc.).  For something this complex, please put things onto separate lines.

(rest of file too)

&gt; LayoutTests/inspector/network/intercept-request.html:55
&gt; +            const [ fetchResult ] = await Promise.all([

Style: no space after `[` and before `]`

&gt; LayoutTests/inspector/network/intercept-request.html:64
&gt; +            ProtocolTest.pass(&quot;Response data: &apos;&quot; + fetchResult.result.value.text.trim() + &quot;&apos;&quot;);

We shouldn&apos;t be using `ProtocolTest.pass` for unknown values, since if this code breaks somehow, we&apos;d now be printing `PASS: ` with some _other_ value, which could seriously confuse bot watchers or future developers as to what the right value is supposed to be.

I&apos;d either use `ProtocolText.expectEqual` and compare against some known/expected value or just use `ProtocolTest.log`.

(rest of file too)

&gt; LayoutTests/inspector/network/intercept-request.html:155
&gt; +        name: &quot;tearDown&quot;,

This shouldn&apos;t be necessary, as when the `InspectorNetworkAgent` is destroyed (when Web Inspector closes/disconnects) we should automatically continue any pending intercepted activity.

&gt; LayoutTests/inspector/network/intercept-request.html:163
&gt; +    function printFetchResult(result)

Please put this function above it&apos;s usage.  I realize that this is perfectly valid JavaScript, but we prefer to declare things before they&apos;re used for readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652950</commentid>
    <comment_count>16</comment_count>
      <attachid>399457</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-14 22:55:09 -0700</bug_when>
    <thetext>Created attachment 399457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652952</commentid>
    <comment_count>17</comment_count>
      <attachid>399243</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-14 22:56:34 -0700</bug_when>
    <thetext>Comment on attachment 399243
Patch

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

Thanks for the review! I&apos;ll add as many tests as necessary once we agree on the protocol. Addressed most of the comments, commented on a couple.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:247
&gt;&gt; +                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;URL pattern to intercept, intercept everything if not specified or empty&quot; },
&gt; 
&gt; I am still not comfortable with this &quot;intercept everything&quot; concept.  I don&apos;t think that there&apos;s a good way to make a UI for this.  Network interception should be a whitelist not a let-me-decide catch-all.

I would encourage you to think about this as of Network.setExtraHTTPHeaders on steroids. You can augment any request or response with a cookie, you don&apos;t need to know the URL for that.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:276
&gt;&gt; +                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true,&quot;description&quot;: &quot;HTTP request url.&quot; },
&gt; 
&gt; I&apos;m not sure I like this idea.  This is really more of a redirect rather than an override.

I was following your lead here. You told me to replace one request with another entirely and request has a URL! Strictly speaking, I can imagine a programmatic proxy that would use it. But I can remove it altogether.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:278
&gt;&gt; +                { &quot;name&quot;: &quot;postData&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;HTTP POST request data, base64-encoded.&quot; }
&gt; 
&gt; Why is this _always_ base64-encoded?  That should probably be another parameter, assuming it even needs to exist at all.

POST data is rare and is often binary. Why splitting the code flow into two paths? That would mean another optional postDataBase64...

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:292
&gt;&gt; +                { &quot;name&quot;: &quot;errorType&quot;, &quot;$ref&quot;: &quot;ResourceErrorType&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Deliver error reason for the request failure.&quot; }
&gt; 
&gt; Where did this come from?  How is it related to _request_ interception?  It seems like you&apos;re trying to expose a way to modify internal state/concepts via the inspector protocol, which is not really something I think Web Inspector wants to do.

You asked me to merge `interceptAsError` into this method in the previous review. One of the outcomes of the request / response is a network error, it accounts for it.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1054
&gt;&gt; +void InspectorNetworkAgent::addInterception(ErrorString&amp; errorString, const String&amp; url, const bool* optionalCaseSensitive, const bool* optionalIsRegex, const String* optionalNetworkStageString)
&gt; 
&gt; The `NetworkStage` actually probably shouldn&apos;t be optional.  What would not specifying a `NetworkStage` even mean?  The only thing that makes sense to me would be for not specifying a `NetworkStage` to mean &quot;intercept at every point&quot;, but for reasons i&apos;ve mentioned i don&apos;t see why that&apos;s needed/wanted.

Done. Existing docs say &quot;If not present this applies to all network stages.&quot;, but I agree it should be required. I made it such. Do I need to do anything for backwards compat here?

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1125
&gt;&gt; +    String requestId = IdentifiersFactory::requestId(loader.identifier());
&gt; 
&gt; We should double-check that the `requestId` isn&apos;t already in `m_pendingInterceptRequests`, and if so invoke the `handler` and return.

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1126
&gt;&gt; +    auto pendingRequest = makeUnique&lt;PendingInterceptRequest&gt;(&amp;loader, WTFMove(handler));
&gt; 
&gt; You could just inline this and avoid the `WTFMove(pendingRequest)`.

Done

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1148
&gt;&gt;  void InspectorNetworkAgent::interceptContinue(ErrorString&amp; errorString, const String&amp; requestId)
&gt; 
&gt; This should also probably take a `NetworkStage` so that we know whether we&apos;re trying to continue the request or the response (also see :1054).
&gt; 
&gt; Alternatively, we could add an `InterceptId` that makes this even more clear, but I think the combo of `RequestId` + `NetworkStage` is probably unique enough.

Done. Added NetworkStage. Anything I need to do for backwards compat?

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1167
&gt;&gt; +    auto pendingRequest = m_pendingInterceptRequests.take(requestId);
&gt; 
&gt; I think this should really be a completely separate command so as to not conflate things, like `interceptRequestWithImmediateResponse`.

We got ourselves into a tough spot here. Earlier, you made me add `errorType` into `interceptResponse` instead of a standalone `interceptAsError`. So now I won&apos;t be able to make parameters of the new `interceptRequestWithImmediateResponse` required. That means that we will end up with two methods with identical signatures (8 optional parameters each) that have the same semantics, but carry a slightly different name. To me that makes things more confusing than having a single method that does what it says. Wdyt?

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1169
&gt;&gt; +        ResourceLoader* loader = pendingRequest-&gt;m_loader.get();
&gt; 
&gt; `auto`?

I would appreciate some style room here unless it is explicitly against the guidelines. Is there a strong recommendation to pick auto* over popular WebCore types? It reads better with the type for me...

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1175
&gt;&gt; +        ResourceRequest request = loader-&gt;request();
&gt; 
&gt; Ditto (:1169)

Ditto!

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1182
&gt;&gt; +            for (auto&amp; header : *headers) {
&gt; 
&gt; NIT: you could use structured binding
&gt; ```
&gt;     for (auto&amp; [key, value] : *headers)
&gt; ```

Done

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1194
&gt;&gt; +            }
&gt; 
&gt; Style: missing newline after block containing `return`
&gt; 
&gt; (rest of file too)

Is this a new code style guideline? I can&apos;t find it, while I can find the opposite: https://webkit.org/code-style-guidelines/#linebreaking-else-if. What did I miss? I can see a lot of code that does what you say, but I see even more code that doesn&apos;t ...

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1195
&gt;&gt; +            Ref&lt;FormData&gt; data = FormData::create(buffer);
&gt; 
&gt; Ditto (:1169), or could even just inline it to avoid the `WTFMove(data)`.

Done

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1208
&gt;&gt; +    if (pendingRequest &amp;&amp; errorTypeString) {
&gt; 
&gt; all of these `if`s could be nested under a shared `if (pendingRequest)`

Would you be comfortable with me keeping it this way? Having a giant if is hard to read - you need to go all the way up to figure out the root guard. Local guards are easy to follow and show you that the variable is guarded.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1252
&gt;&gt; +        if (base64Encoded &amp;&amp; *base64Encoded &amp;&amp; content) {
&gt; 
&gt; NIT: you could next these two `if`s under a shared `if (content &amp;&amp; !content-&gt;isEmpty())`

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1263
&gt;&gt; +        ResourceResponse response(pendingRequest-&gt;m_loader-&gt;url(), *mimeType, data-&gt;size(), String());
&gt; 
&gt; `data` is not guaranteed to exist

Good catch! I created an empty buffer in case no content to make the rest of the code still read nice.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1275
&gt;&gt; +        loader-&gt;didReceiveResponse(response, [loader, data = data.releaseNonNull()]() mutable {
&gt; 
&gt; Replacing something with its own name is not the easiest to read.  Also, `data` is not guaranteed to exist, which `RefPtr::releaseNonNull` expects.  It should probably either just be a regular `&amp;data` capture or a `buffer = WTFMove(data)`.
&gt; 
&gt; Why does this need to be `mutable`?

Done. Needs to be mutable, otherwise everything is const ref and we are passing the buffer further.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.h:226
&gt;&gt; +        NetworkStage networkStage { NetworkStage::Response };
&gt; 
&gt; Ditto (InspectorNetworkAgent.cpp:1054)

Should be ok to default to this, I anyways assign it.

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:240
&gt;&gt; +        RefPtr&lt;ResourceLoader&gt; protectedResourceLoader = &amp;resourceLoader;
&gt; 
&gt; This is normally done as part of the lambda capture.
&gt; ```
&gt;     [protectedResourceLoader = makeRef(resourceLoader)]
&gt; ```

Done. You folks have really wide screens. Now 245 columns!

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:10
&gt;&gt; +        const response = await fetch(&apos;resources/data.json&apos;);
&gt; 
&gt; Style: we only use `const` for values that never change between executions (i.e. an actual constant), which is not the case here, so please use `let`
&gt; 
&gt; (rest of file too)

Done.

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:16
&gt;&gt; +            header: response.headers.get(&apos;my-header&apos;)
&gt; 
&gt; Style: missing trailing comma
&gt; 
&gt; (rest of file too)

Done.

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:23
&gt;&gt; +async function test()
&gt; 
&gt; Please don&apos;t make the `test` function `async`.  The test harness doesn&apos;t really support `async` functions.  Our usual pattern is to set up the entire test suite and then put the `runTestCasesAndFinish` call in the callback.

Done.

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:25
&gt;&gt; +    let suite = ProtocolTest.createAsyncSuite(&quot;Network.setInterceptionEnabled&quot;);
&gt; 
&gt; Oops?

I am not sure what the guidelines for this naming are. Will &quot;Network request interception&quot; work?

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:27
&gt;&gt; +    const [, , {result}] = await Promise.all([
&gt; 
&gt; Even if it&apos;s not used, I&apos;d rather give a name to each item so that I don&apos;t have to read the code to figure out what is being &quot;skipped&quot;
&gt; 
&gt; (rest of file too)

Done

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:43
&gt;&gt; +        name: &quot;requestIntercepted.interceptContinue&quot;,
&gt; 
&gt; NIT: I like to prefix each test case name with the test suite&apos;s name so that the relationship is clear

Done

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:48
&gt;&gt; +                InspectorProtocol.awaitCommand({method: &quot;Runtime.evaluate&quot;, params: {
&gt; 
&gt; This is definitely not our style.  Usually we only inline objects if there are only a few simple values (e.g. numbers, strings, etc.).  For something this complex, please put things onto separate lines.
&gt; 
&gt; (rest of file too)

Any way I can convince you that inline is better here? Extracting a variable here means that I need to create all params before the Promise.all call. In some cases that is more than a dozen of lines. Reading it gets really tough.

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:55
&gt;&gt; +            const [ fetchResult ] = await Promise.all([
&gt; 
&gt; Style: no space after `[` and before `]`

Done

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:64
&gt;&gt; +            ProtocolTest.pass(&quot;Response data: &apos;&quot; + fetchResult.result.value.text.trim() + &quot;&apos;&quot;);
&gt; 
&gt; We shouldn&apos;t be using `ProtocolTest.pass` for unknown values, since if this code breaks somehow, we&apos;d now be printing `PASS: ` with some _other_ value, which could seriously confuse bot watchers or future developers as to what the right value is supposed to be.
&gt; 
&gt; I&apos;d either use `ProtocolText.expectEqual` and compare against some known/expected value or just use `ProtocolTest.log`.
&gt; 
&gt; (rest of file too)

Done

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:155
&gt;&gt; +        name: &quot;tearDown&quot;,
&gt; 
&gt; This shouldn&apos;t be necessary, as when the `InspectorNetworkAgent` is destroyed (when Web Inspector closes/disconnects) we should automatically continue any pending intercepted activity.

Done

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:163
&gt;&gt; +    function printFetchResult(result)
&gt; 
&gt; Please put this function above it&apos;s usage.  I realize that this is perfectly valid JavaScript, but we prefer to declare things before they&apos;re used for readability.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653117</commentid>
    <comment_count>18</comment_count>
      <attachid>399499</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-15 11:18:27 -0700</bug_when>
    <thetext>Created attachment 399499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656776</commentid>
    <comment_count>19</comment_count>
      <attachid>400431</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-27 23:36:20 -0700</bug_when>
    <thetext>Created attachment 400431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657026</commentid>
    <comment_count>20</comment_count>
      <attachid>400507</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-28 14:46:47 -0700</bug_when>
    <thetext>Created attachment 400507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657031</commentid>
    <comment_count>21</comment_count>
      <attachid>400510</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-05-28 14:57:17 -0700</bug_when>
    <thetext>Created attachment 400510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658700</commentid>
    <comment_count>22</comment_count>
      <attachid>399243</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-03 08:29:28 -0700</bug_when>
    <thetext>Comment on attachment 399243
Patch

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

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1054
&gt;&gt;&gt; +void InspectorNetworkAgent::addInterception(ErrorString&amp; errorString, const String&amp; url, const bool* optionalCaseSensitive, const bool* optionalIsRegex, const String* optionalNetworkStageString)
&gt;&gt; 
&gt;&gt; The `NetworkStage` actually probably shouldn&apos;t be optional.  What would not specifying a `NetworkStage` even mean?  The only thing that makes sense to me would be for not specifying a `NetworkStage` to mean &quot;intercept at every point&quot;, but for reasons i&apos;ve mentioned i don&apos;t see why that&apos;s needed/wanted.
&gt; 
&gt; Done. Existing docs say &quot;If not present this applies to all network stages.&quot;, but I agree it should be required. I made it such. Do I need to do anything for backwards compat here?

I don&apos;t think there&apos;s anything that needs to be done for compat :)

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1148
&gt;&gt;&gt;  void InspectorNetworkAgent::interceptContinue(ErrorString&amp; errorString, const String&amp; requestId)
&gt;&gt; 
&gt;&gt; This should also probably take a `NetworkStage` so that we know whether we&apos;re trying to continue the request or the response (also see :1054).
&gt;&gt; 
&gt;&gt; Alternatively, we could add an `InterceptId` that makes this even more clear, but I think the combo of `RequestId` + `NetworkStage` is probably unique enough.
&gt; 
&gt; Done. Added NetworkStage. Anything I need to do for backwards compat?

I think the only compat change needed is in `WI.NetworkManager.prototype.responseIntercepted`:
```
    target.NetworkAgent.interceptContinue.invoke({
        requestId,
        networkStage: InspectorBackend.Enum.Network.NetworkStage.Response,
    });
```

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1194
&gt;&gt;&gt; +            }
&gt;&gt; 
&gt;&gt; Style: missing newline after block containing `return`
&gt;&gt; 
&gt;&gt; (rest of file too)
&gt; 
&gt; Is this a new code style guideline? I can&apos;t find it, while I can find the opposite: https://webkit.org/code-style-guidelines/#linebreaking-else-if. What did I miss? I can see a lot of code that does what you say, but I see even more code that doesn&apos;t ...

This is something I personally _strongly_ prefer, as it makes it very clear that subsequent `if` are not related.  I also find that the `return` sticks out more if there&apos;s a newline.

I usually use sequential `if` _without_ newlines when they&apos;re all related (see `InspectorDOMAgent::buildObjectForAccessibilityProperties` as an example).

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1208
&gt;&gt;&gt; +    if (pendingRequest &amp;&amp; errorTypeString) {
&gt;&gt; 
&gt;&gt; all of these `if`s could be nested under a shared `if (pendingRequest)`
&gt; 
&gt; Would you be comfortable with me keeping it this way? Having a giant if is hard to read - you need to go all the way up to figure out the root guard. Local guards are easy to follow and show you that the variable is guarded.

I&apos;d prefer it under a shared `if` because then we can avoid having so many repeated checks.  I also originally requested this so that the logic is more clearly separated into two paths: &quot;here&apos;s the request path&quot; and &quot;the rest assumes/expects a response&quot;.

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1275
&gt;&gt;&gt; +        loader-&gt;didReceiveResponse(response, [loader, data = data.releaseNonNull()]() mutable {
&gt;&gt; 
&gt;&gt; Replacing something with its own name is not the easiest to read.  Also, `data` is not guaranteed to exist, which `RefPtr::releaseNonNull` expects.  It should probably either just be a regular `&amp;data` capture or a `buffer = WTFMove(data)`.
&gt;&gt; 
&gt;&gt; Why does this need to be `mutable`?
&gt; 
&gt; Done. Needs to be mutable, otherwise everything is const ref and we are passing the buffer further.

Why is everything const ref?  You can add `&amp;` before `loader` to make it a ref instead of a copy, but I don&apos;t think that will make it const.

&gt;&gt;&gt; LayoutTests/inspector/network/intercept-request.html:25
&gt;&gt;&gt; +    let suite = ProtocolTest.createAsyncSuite(&quot;Network.setInterceptionEnabled&quot;);
&gt;&gt; 
&gt;&gt; Oops?
&gt; 
&gt; I am not sure what the guidelines for this naming are. Will &quot;Network request interception&quot; work?

My approach has been to make the suite name (and file name) match the protocol domain/command/event as much as possible, and to use a description otherwise.  We also like to prefix each test case with the name of the suite so the context is carried forward.

In this case, I&apos;d probably use something like `Network.RequestInterception` and then rename the test cases to `Network.RequestInterception.interceptContinue`.

&gt; LayoutTests/inspector/network/intercept-request.html:31
&gt; +            expression: &quot;document.URL&quot;

NIT: I forgot to mention this earlier, but one thing we like to do is use backticks for strings that will be evaluated in the page.  Up to you whether you want to or not, it&apos;s just something we do :)

&gt;&gt;&gt; LayoutTests/inspector/network/intercept-request.html:48
&gt;&gt;&gt; +                InspectorProtocol.awaitCommand({method: &quot;Runtime.evaluate&quot;, params: {
&gt;&gt; 
&gt;&gt; This is definitely not our style.  Usually we only inline objects if there are only a few simple values (e.g. numbers, strings, etc.).  For something this complex, please put things onto separate lines.
&gt;&gt; 
&gt;&gt; (rest of file too)
&gt; 
&gt; Any way I can convince you that inline is better here? Extracting a variable here means that I need to create all params before the Promise.all call. In some cases that is more than a dozen of lines. Reading it gets really tough.

Oh sorry I wasn&apos;t asking you to define stuff outside of this call.  Inlining things is fine.  This is more what I was suggesting:
```
    InspectorProtocol.awaitCommand({
        method: &quot;Runtime.evaluate&quot;,
        params: {
            expression: `fetchData()`,
        },
    });
```
When we write object/array literals, we usually either inline the entire thing or put each item on a separate line (with some exceptions here and there if sub-objects/sub-arrays are simple).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658731</commentid>
    <comment_count>23</comment_count>
      <attachid>399243</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-03 09:20:57 -0700</bug_when>
    <thetext>Comment on attachment 399243
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:278
&gt;&gt;&gt; +                { &quot;name&quot;: &quot;postData&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;HTTP POST request data, base64-encoded.&quot; }
&gt;&gt; 
&gt;&gt; Why is this _always_ base64-encoded?  That should probably be another parameter, assuming it even needs to exist at all.
&gt; 
&gt; POST data is rare and is often binary. Why splitting the code flow into two paths? That would mean another optional postDataBase64...

I&apos;m not sure I agree with the statement &quot;POST data is rare and is often binary&quot;.  As an example, I believe basic `&lt;form&gt;` POST data is not binary.  This is a common pattern in the Web Inspector protocol, so I would find it weird to not see it here too.

Also, `Network.Request` uses a plain non-base64-encoded string for `postData` right now, so either that&apos;s incorrect and we should change it or this `postData` should be made non-base-64-encoded to match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658751</commentid>
    <comment_count>24</comment_count>
      <attachid>400510</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-03 09:50:14 -0700</bug_when>
    <thetext>Comment on attachment 400510
Patch

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

r-, as i think we still have untested paths, but this is looking good :)
 - for every optional parameter, we should have a test where it exists and where it doesn&apos;t (these can be batched for multiple optional parameters at once)
 - when a request is cancelled
 - invoking the command with a `requestId` that doesn&apos;t exist or is for the wrong stage
I&apos;d also recommend additionally copying/mimicking the local overrides tests (both what they do and how many there are) as they&apos;re pretty comprehensive.

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:288
&gt; +                { &quot;name&quot;: &quot;content&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true },
&gt; +                { &quot;name&quot;: &quot;base64Encoded&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;True, if content was sent as base64.&quot; },

this needs tests

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:297
&gt; +            &quot;description&quot;: &quot;Provide response content for an intercepted response.&quot;,

This should explain more about what this means, namely that it&apos;ll completely skip the network.

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:305
&gt; +                { &quot;name&quot;: &quot;mimeType&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;MIME Type for the data.&quot; },
&gt; +                { &quot;name&quot;: &quot;status&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;HTTP response status code. Pass through original values if unmodified.&quot; },
&gt; +                { &quot;name&quot;: &quot;statusText&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;HTTP response status text. Pass through original values if unmodified.&quot; },
&gt; +                { &quot;name&quot;: &quot;headers&quot;, &quot;$ref&quot;: &quot;Headers&quot;, &quot;description&quot;: &quot;HTTP response headers. Pass through original values if unmodified.&quot; }

These should all probably be optional.

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:310
&gt; +            &quot;description&quot;: &quot;Fail request or response with given error type.&quot;,

Can this also be used when a response is intercepted, or just for requests?  If the former, we should change the name.  If the latter, we should change the description.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:878
&gt; +        ResourceLoader* loader = pendingRequest-&gt;m_loader.get();
&gt; +        if (loader-&gt;identifier())
&gt; +            pendingRequest-&gt;m_completionHandler(&amp;loader-&gt;request());

Can we create a `PendingInterceptRequest::respondWithOriginalRequest` so this common logic (also seen in `InspectorNetworkAgent::interceptContinue`) isn&apos;t repeated?

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1066
&gt; +    auto networkStage = Inspector::Protocol::InspectorHelpers::parseEnumValueFromString&lt;Inspector::Protocol::Network::NetworkStage&gt;(networkStageString);
&gt; +    if (!networkStage) {
&gt; +        errorString = makeString(&quot;Unknown networkStage: &quot;_s, networkStageString);
&gt; +        return;
&gt; +    }

Can we leave this part up top?  That way, if we do fail to parse it happens before we create any objects or do any other logic.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1070
&gt;          errorString = &quot;Intercept for given url and given isRegex already exists&quot;_s;

NIT: this should also mention &quot;given stage&quot;

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1085
&gt; +    auto networkStage = Inspector::Protocol::InspectorHelpers::parseEnumValueFromString&lt;Inspector::Protocol::Network::NetworkStage&gt;(networkStageString);
&gt; +    if (!networkStage) {
&gt; +        errorString = makeString(&quot;Unknown networkStage: &quot;_s, networkStageString);
&gt; +        return;
&gt; +    }

Ditto (:1062)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1089
&gt;          errorString = &quot;Missing intercept for given url and given isRegex&quot;_s;

ditto (:1070)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1097
&gt; +    return shouldIntercept(request.url(), NetworkStage::Request) || shouldIntercept(request.url(), NetworkStage::Response);

NIT: if you wanted, you could put this on a separate line so it lines up for readability:
```
    return shouldIntercept(request.url(), NetworkStage::Request)
        || shouldIntercept(request.url(), NetworkStage::Response);
```

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1155
&gt; +    if (networkStage.value() == NetworkStage::Request) {

NIT: even though there are only two values, i&apos;d make this into a `switch` so that the paths for each `NetworkStage` value are completely clear:
```
    switch (networkStage.value()) {
    case NetworkStage::Request:
        if (auto pendingInterceptRequest = m_pendingInterceptRequests.take(requestId)) {
            pendingInterceptRequest-&gt;respondWithOriginalRequest();
        else
            errorString = &quot;Missing pending intercept request for given requestId&quot;_s;
        return;

    case NetworkStage::Response:
        if (auto pendingInterceptResponse = m_pendingInterceptResponses.take(requestId)) {
            pendingInterceptResponse-&gt;respondWithOriginalResponse();
        else
            errorString = &quot;Missing pending intercept response for given requestId&quot;_s;
        return;
    }

    ASSERT_NOT_REACHED();
```

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1161
&gt; +        errorString = &quot;Missing pending intercept request for given requestId&quot;_s;

we should have a test for this path

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1178
&gt; +        if (!loader-&gt;identifier()) {

Can we create a `bool ResourceLoader::wasCancelled() const` or something like that so it&apos;s more explicit, instead of inferring based on whether the `identifier` is set or not (which seems like an internal implementation detail of `ResourceLoader`)?

Alternatively, could we check `ResourceLoader::reachedTerminalState` instead?

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1182
&gt; +        // Safe to const cast at this point, we are only adjusting the method / headers / post.

this comment doesn&apos;t seem accurate/necessary

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1259
&gt; +        errorString = &quot;Missing pending intercept response for given requestId&quot;_s;

s/response/request

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1265
&gt; +        errorString = &quot;Unable to fulfill request, it has already been processed&quot;_s;

we should have a test for this path

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1291
&gt; +    RefPtr&lt;SharedBuffer&gt; data;
&gt; +    if (base64Encoded &amp;&amp; *base64Encoded) {
&gt; +        Vector&lt;uint8_t&gt; buffer;
&gt; +        if (!base64Decode(content, buffer)) {
&gt; +            errorString = &quot;Unable to decode given content&quot;_s;
&gt; +            return;
&gt; +        }
&gt; +        data = SharedBuffer::create(WTFMove(buffer));
&gt; +    } else
&gt; +        data = SharedBuffer::create(content.utf8().data(), content.utf8().length());
&gt; +
&gt; +    // Mimic data URL load behavior - report didReceiveResponse &amp; didFinishLoading.
&gt; +    ResourceResponse response(pendingRequest-&gt;m_loader-&gt;url(), mimeType, data-&gt;size(), String());
&gt; +    response.setSource(ResourceResponse::Source::InspectorOverride);
&gt; +    response.setHTTPStatusCode(status);
&gt; +    response.setHTTPStatusText(statusText);
&gt; +    HTTPHeaderMap explicitHeaders;
&gt; +    for (auto&amp; header : headers) {
&gt; +        String headerValue;
&gt; +        if (header.value-&gt;asString(headerValue))
&gt; +            explicitHeaders.add(header.key, headerValue);
&gt; +    }
&gt; +    response.setHTTPHeaderFields(WTFMove(explicitHeaders));
&gt; +    response.setHTTPHeaderField(HTTPHeaderName::ContentType, response.mimeType());

Perhaps we can create a new private method `InspectorNetworkAgent::createInterceptResponse` so that we can share much of this logic between `InspectorNetworkAgent::interceptWithResponse` and `InspectorNetworkAgent::interceptRequestWithResponse`.  To be clear, I still think we should have separate commands (and I understand that we&apos;re basically duplicating variables), but I don&apos;t think that means we can&apos;t share some logic between them :)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1304
&gt; +        errorString = &quot;Missing pending intercept response for given requestId&quot;_s;

Ditto (:1259)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1310
&gt; +        errorString = &quot;Unable to abort request, it has already been processed&quot;_s;

we should have a test for this path

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1316
&gt; +        errorString = &quot;Unknown error type&quot;_s;

NIT: `makeString(&quot;Unknown errorType: &quot;_s, errorTypeString)`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.h:167
&gt; +        PendingInterceptRequest(ResourceLoader* loader, CompletionHandler&lt;void(const ResourceRequest*)&gt;&amp;&amp; completionHandler)

NIT: can we pass `ResourceLoader&amp;` and do `&amp;loader` here instead?  That way, we know with certainty that when we create this object the `loader` exists (e.g. a caller can&apos;t pass `nullptr`).

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.h:173
&gt; +        RefPtr&lt;ResourceLoader&gt; m_loader;

Do we need a `RefPtr`?  Is it possible for the `ResourceLoader` to go away while Web Inspector is deciding what to do?

&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:164
&gt; -                            networkStage: InspectorBackend.Enum.Network.NetworkStage.Response,
&gt; +                            stage: InspectorBackend.Enum.Network.NetworkStage.Response,

Oh lol oops :P

Also, can we reorder these so that they match the ordering in the protocol?

&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:911
&gt; +        this.dispatchEventToListeners(WI.NetworkManager.Event.RequestIntercepted, {target, requestId, request});

This could have a FIXME with a bug link for adding request interception support to the frontend :)

&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:919
&gt; +            target.NetworkAgent.interceptContinue(requestId, InspectorBackend.Enum.Network.NetworkStage.Response);

I don&apos;t think this will be backwards compatible, as older backends will expect the last argument to be a callback, not a `Network.NetworkStage`.  I&apos;d recommend using `invoke` as that handles all that for you :)
```
    target.NetworkAgent.interceptContinue.invoke({
        requestId,
        networkStage: InspectorBackend.Enum.Network.NetworkStage.Response,
    });
```

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:241
&gt; +            if (request)

Can we make this ` const ResourceRequest&amp;` instead?  I feel like if Web Inspector is going to pass a `nullptr`, it just shouldn&apos;t even invoke this `CompletionHandler` (which I believe would have the same result as passing `nullptr`).

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:9
&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptRequest&quot;);

This should probably be `Network.interceptRequestWithResponse` as that&apos;s really what you&apos;re testing.

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:29
&gt; +                    headers: {},

we should test if this isn&apos;t included

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:9
&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptRequest&quot;);

This should probably be `Network.interceptWithRequest` as that&apos;s really what you&apos;re testing.

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:27
&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptRequest&quot;);

This should probably be `Network.interceptWithRequest` as that&apos;s really what you&apos;re testing.

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:52
&gt; +            let data = eval(&apos;(&apos; + response.result.value + &apos;)&apos;);

Why not `JSON.parse`?

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:80
&gt; +            let data = eval(&apos;(&apos; + response.result.value + &apos;)&apos;);

Ditto (:52)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:9
&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptRequest&quot;);

This should probably be `Network.interceptRequestWithError` as that&apos;s really what you&apos;re testing.

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:25
&gt; +                    errorType: &quot;General&quot;,

this should use the enum `InspectorBackend.Network.ResourceErrorType.General`

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-response.html:9
&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptRequest&quot;);

This should probably be `Network.interceptRequestWithResponse` as that&apos;s really what you&apos;re testing.

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource.html:15
&gt; +					  let target = WI.assumingMainTarget()

indentation Oops?

&gt; LayoutTests/http/tests/inspector/network/resources/intercept-echo.php:15
&gt; +echo &quot;{\n&quot;;
&gt; +echo &quot;  \&quot;method\&quot;: \&quot;$method\&quot;,\n&quot;;
&gt; +echo &quot;  \&quot;headers\&quot;: {\n&quot;;
&gt; +foreach (getallheaders() as $name =&gt; $value) {
&gt; +	echo &quot;    \&quot;$name\&quot;: \&quot;$value\&quot;,\n&quot;;
&gt; +}
&gt; +echo &quot;  },\n&quot;;
&gt; +echo &quot;  \&quot;post\&quot;: {\n&quot;;
&gt; +foreach ($_POST as $name =&gt; $value){
&gt; +	echo &quot;    \&quot;$name\&quot;: \&quot;$value\&quot;,\n&quot;;
&gt; +}
&gt; +echo &quot;  },\n&quot;;
&gt; +echo &quot;}\n&quot;;

Do we have to use `echo`?
```
    {
        &quot;method&quot;: &quot;&lt;?php echo $_SERVER[&apos;REQUEST_METHOD&apos;]; ?&gt;&quot;,
        &quot;headers&quot;: {
    &lt;?php foreach (getallheaders() as $name =&gt; $value) { ?&gt;
            &quot;&lt;?php echo $name; ?&gt;&quot;: &quot;&lt;?php echo $value; ?&gt;&quot;,
    &lt;?php } ?&gt;
        },
        &quot;post&quot;: {
    &lt;?php foreach ($_POST as $name =&gt; $value) { ?&gt;
            &quot;&lt;?php echo $name; ?&gt;&quot;: &quot;&lt;?php echo $value; ?&gt;&quot;,
    &lt;?php } ?&gt;
        },
    }
```

&gt; LayoutTests/http/tests/inspector/network/resources/intercept-request-overriden-page.html:4
&gt; +				&lt;script src=&quot;../resources/inspector-test.js&quot;&gt;

Why is this included in this file?

&gt; LayoutTests/http/tests/inspector/network/resources/intercept-request-overriden-page.html:8
&gt; +				&lt;p&gt;Overridden page content&lt;/p&gt;

indentation Oops?

&gt; LayoutTests/inspector/network/intercept-request.html:25
&gt; +    let suite = ProtocolTest.createAsyncSuite(&quot;Network request interception&quot;);

This one i&apos;d name `Network.interceptRequest` 😅

&gt; LayoutTests/inspector/network/intercept-request.html:42
&gt; +                InspectorProtocol.awaitCommand({method: &quot;Network.enable&quot;, params: {}}),
&gt; +                InspectorProtocol.awaitCommand({method: &quot;Runtime.enable&quot;, params: {}}),

NIT: you could put these outside of a test case, as the protocol, is sequential so we know that the `Runtime.evaluate` won&apos;t run until these are done

&gt; LayoutTests/inspector/network/intercept-request.html:77
&gt; +                    stage: &quot;request&quot;,

this should use the enum `InspectorBackend.Enum.Network.NetworkStage.Request`

&gt; LayoutTests/inspector/network/intercept-request.html:104
&gt; +                    url: url.replace(&apos;data.json&apos;, &apos;data2.json&apos;),

Please use a better name than &quot;data2&quot;.  How about &quot;data-intercepted&quot;?

&gt; LayoutTests/inspector/network/intercept-request.html:129
&gt; +                InspectorProtocol.awaitCommand({method: &quot;Network.interceptRequestWithResponse&quot;, params: {

We should have many of the same tests for this as we have for `Network.interceptWithResponse`.

Also, we should test that the server is _not_ hit when using `Network.interceptRequestWithResponse`.

&gt; LayoutTests/inspector/network/intercept-request.html:163
&gt; +                    errorType: &quot;Cancellation&quot;,

this should use the enum `InspectorBackend.Enum.Network.ResourceErrorType.Cancellation`

&gt; LayoutTests/inspector/network/local-resource-override-continue-response.html:49
&gt; +                InspectorProtocol.awaitCommand({method: &quot;Network.interceptContinue&quot;, params: {requestId: messageObject.params.requestId, stage: &quot;response&quot;}}),

this should use the enum `InspectorBackend.Enum.Network.NetworkStage.Request`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658866</commentid>
    <comment_count>25</comment_count>
      <attachid>400965</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-03 13:34:54 -0700</bug_when>
    <thetext>Created attachment 400965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658899</commentid>
    <comment_count>26</comment_count>
      <attachid>400973</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-03 15:43:03 -0700</bug_when>
    <thetext>Created attachment 400973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658901</commentid>
    <comment_count>27</comment_count>
      <attachid>400510</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-03 15:50:06 -0700</bug_when>
    <thetext>Comment on attachment 400510
Patch

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

Thanks for the thorough review. This has been in the air for so long that I&apos;d like to land it before I add more tests. I&apos;m marking your test requests in the review for the follow up - it isn&apos;t that much.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:288
&gt;&gt; +                { &quot;name&quot;: &quot;base64Encoded&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;True, if content was sent as base64.&quot; },
&gt; 
&gt; this needs tests

Done. Reverted to being required instead.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:297
&gt;&gt; +            &quot;description&quot;: &quot;Provide response content for an intercepted response.&quot;,
&gt; 
&gt; This should explain more about what this means, namely that it&apos;ll completely skip the network.

Done.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:305
&gt;&gt; +                { &quot;name&quot;: &quot;headers&quot;, &quot;$ref&quot;: &quot;Headers&quot;, &quot;description&quot;: &quot;HTTP response headers. Pass through original values if unmodified.&quot; }
&gt; 
&gt; These should all probably be optional.

We need to populate the request with content, mime &amp; status. Headers could be optional, but I thought of making them also required to emphasize that user is responsible for the entirety of the response.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:310
&gt;&gt; +            &quot;description&quot;: &quot;Fail request or response with given error type.&quot;,
&gt; 
&gt; Can this also be used when a response is intercepted, or just for requests?  If the former, we should change the name.  If the latter, we should change the description.

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:878
&gt;&gt; +            pendingRequest-&gt;m_completionHandler(&amp;loader-&gt;request());
&gt; 
&gt; Can we create a `PendingInterceptRequest::respondWithOriginalRequest` so this common logic (also seen in `InspectorNetworkAgent::interceptContinue`) isn&apos;t repeated?

Done.

Named it `continueWithOriginalRequest`. Similarly, encapsulated PendingInterceptRequest::continueWithRequest.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1066
&gt;&gt; +    }
&gt; 
&gt; Can we leave this part up top?  That way, if we do fail to parse it happens before we create any objects or do any other logic.

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1070
&gt;&gt;          errorString = &quot;Intercept for given url and given isRegex already exists&quot;_s;
&gt; 
&gt; NIT: this should also mention &quot;given stage&quot;

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1085
&gt;&gt; +    }
&gt; 
&gt; Ditto (:1062)

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1097
&gt;&gt; +    return shouldIntercept(request.url(), NetworkStage::Request) || shouldIntercept(request.url(), NetworkStage::Response);
&gt; 
&gt; NIT: if you wanted, you could put this on a separate line so it lines up for readability:
&gt; ```
&gt;     return shouldIntercept(request.url(), NetworkStage::Request)
&gt;         || shouldIntercept(request.url(), NetworkStage::Response);
&gt; ```

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1155
&gt;&gt; +    if (networkStage.value() == NetworkStage::Request) {
&gt; 
&gt; NIT: even though there are only two values, i&apos;d make this into a `switch` so that the paths for each `NetworkStage` value are completely clear:
&gt; ```
&gt;     switch (networkStage.value()) {
&gt;     case NetworkStage::Request:
&gt;         if (auto pendingInterceptRequest = m_pendingInterceptRequests.take(requestId)) {
&gt;             pendingInterceptRequest-&gt;respondWithOriginalRequest();
&gt;         else
&gt;             errorString = &quot;Missing pending intercept request for given requestId&quot;_s;
&gt;         return;
&gt; 
&gt;     case NetworkStage::Response:
&gt;         if (auto pendingInterceptResponse = m_pendingInterceptResponses.take(requestId)) {
&gt;             pendingInterceptResponse-&gt;respondWithOriginalResponse();
&gt;         else
&gt;             errorString = &quot;Missing pending intercept response for given requestId&quot;_s;
&gt;         return;
&gt;     }
&gt; 
&gt;     ASSERT_NOT_REACHED();
&gt; ```

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1161
&gt;&gt; +        errorString = &quot;Missing pending intercept request for given requestId&quot;_s;
&gt; 
&gt; we should have a test for this path

[Carry over]: Adding this in a follow-up patch.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1178
&gt;&gt; +        if (!loader-&gt;identifier()) {
&gt; 
&gt; Can we create a `bool ResourceLoader::wasCancelled() const` or something like that so it&apos;s more explicit, instead of inferring based on whether the `identifier` is set or not (which seems like an internal implementation detail of `ResourceLoader`)?
&gt; 
&gt; Alternatively, could we check `ResourceLoader::reachedTerminalState` instead?

Done, using reachedTerminalState()

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1182
&gt;&gt; +        // Safe to const cast at this point, we are only adjusting the method / headers / post.
&gt; 
&gt; this comment doesn&apos;t seem accurate/necessary

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1259
&gt;&gt; +        errorString = &quot;Missing pending intercept response for given requestId&quot;_s;
&gt; 
&gt; s/response/request

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1265
&gt;&gt; +        errorString = &quot;Unable to fulfill request, it has already been processed&quot;_s;
&gt; 
&gt; we should have a test for this path

[Carry over]: Adding this in a follow-up patch.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1291
&gt;&gt; +    response.setHTTPHeaderField(HTTPHeaderName::ContentType, response.mimeType());
&gt; 
&gt; Perhaps we can create a new private method `InspectorNetworkAgent::createInterceptResponse` so that we can share much of this logic between `InspectorNetworkAgent::interceptWithResponse` and `InspectorNetworkAgent::interceptRequestWithResponse`.  To be clear, I still think we should have separate commands (and I understand that we&apos;re basically duplicating variables), but I don&apos;t think that means we can&apos;t share some logic between them :)

Let me see what I can do here. I&apos;d really like to keep all those required in the interceptRequestWithResponse.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1304
&gt;&gt; +        errorString = &quot;Missing pending intercept response for given requestId&quot;_s;
&gt; 
&gt; Ditto (:1259)

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1310
&gt;&gt; +        errorString = &quot;Unable to abort request, it has already been processed&quot;_s;
&gt; 
&gt; we should have a test for this path

[Carry over]: Adding this in a follow-up patch.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1316
&gt;&gt; +        errorString = &quot;Unknown error type&quot;_s;
&gt; 
&gt; NIT: `makeString(&quot;Unknown errorType: &quot;_s, errorTypeString)`

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.h:167
&gt;&gt; +        PendingInterceptRequest(ResourceLoader* loader, CompletionHandler&lt;void(const ResourceRequest*)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; NIT: can we pass `ResourceLoader&amp;` and do `&amp;loader` here instead?  That way, we know with certainty that when we create this object the `loader` exists (e.g. a caller can&apos;t pass `nullptr`).

It is actually created from within our code that ensures it is non-null. I like raw pointer more because we are storing it in a RefPtr after all.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.h:173
&gt;&gt; +        RefPtr&lt;ResourceLoader&gt; m_loader;
&gt; 
&gt; Do we need a `RefPtr`?  Is it possible for the `ResourceLoader` to go away while Web Inspector is deciding what to do?

Yes, it can be canceled externally.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:164
&gt;&gt; +                            stage: InspectorBackend.Enum.Network.NetworkStage.Response,
&gt; 
&gt; Oh lol oops :P
&gt; 
&gt; Also, can we reorder these so that they match the ordering in the protocol?

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:911
&gt;&gt; +        this.dispatchEventToListeners(WI.NetworkManager.Event.RequestIntercepted, {target, requestId, request});
&gt; 
&gt; This could have a FIXME with a bug link for adding request interception support to the frontend :)

Is there a bug I could refer to? Hesitant requesting something like that. I.e. I can imagine local overrides using the new logic, but not sure what user-facing feature that would be.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:919
&gt;&gt; +            target.NetworkAgent.interceptContinue(requestId, InspectorBackend.Enum.Network.NetworkStage.Response);
&gt; 
&gt; I don&apos;t think this will be backwards compatible, as older backends will expect the last argument to be a callback, not a `Network.NetworkStage`.  I&apos;d recommend using `invoke` as that handles all that for you :)
&gt; ```
&gt;     target.NetworkAgent.interceptContinue.invoke({
&gt;         requestId,
&gt;         networkStage: InspectorBackend.Enum.Network.NetworkStage.Response,
&gt;     });
&gt; ```

Done. you mean &apos;stage&apos; :)

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:241
&gt;&gt; +            if (request)
&gt; 
&gt; Can we make this ` const ResourceRequest&amp;` instead?  I feel like if Web Inspector is going to pass a `nullptr`, it just shouldn&apos;t even invoke this `CompletionHandler` (which I believe would have the same result as passing `nullptr`).

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:9
&gt;&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptRequest&quot;);
&gt; 
&gt; This should probably be `Network.interceptRequestWithResponse` as that&apos;s really what you&apos;re testing.

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:29
&gt;&gt; +                    headers: {},
&gt; 
&gt; we should test if this isn&apos;t included

That&apos;s required!

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:9
&gt;&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptRequest&quot;);
&gt; 
&gt; This should probably be `Network.interceptWithRequest` as that&apos;s really what you&apos;re testing.

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:27
&gt;&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptRequest&quot;);
&gt; 
&gt; This should probably be `Network.interceptWithRequest` as that&apos;s really what you&apos;re testing.

Done

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:52
&gt;&gt; +            let data = eval(&apos;(&apos; + response.result.value + &apos;)&apos;);
&gt; 
&gt; Why not `JSON.parse`?

That is for the relax JSON syntax (trailing commas).

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:80
&gt;&gt; +            let data = eval(&apos;(&apos; + response.result.value + &apos;)&apos;);
&gt; 
&gt; Ditto (:52)

Same as above.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:9
&gt;&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptRequest&quot;);
&gt; 
&gt; This should probably be `Network.interceptRequestWithError` as that&apos;s really what you&apos;re testing.

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:25
&gt;&gt; +                    errorType: &quot;General&quot;,
&gt; 
&gt; this should use the enum `InspectorBackend.Network.ResourceErrorType.General`

Done. InspectorBackend.Enum...

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-response.html:9
&gt;&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptRequest&quot;);
&gt; 
&gt; This should probably be `Network.interceptRequestWithResponse` as that&apos;s really what you&apos;re testing.

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource.html:15
&gt;&gt; +					  let target = WI.assumingMainTarget()
&gt; 
&gt; indentation Oops?

Ouch indeed :/

&gt;&gt; LayoutTests/http/tests/inspector/network/resources/intercept-echo.php:15
&gt;&gt; +echo &quot;}\n&quot;;
&gt; 
&gt; Do we have to use `echo`?
&gt; ```
&gt;     {
&gt;         &quot;method&quot;: &quot;&lt;?php echo $_SERVER[&apos;REQUEST_METHOD&apos;]; ?&gt;&quot;,
&gt;         &quot;headers&quot;: {
&gt;     &lt;?php foreach (getallheaders() as $name =&gt; $value) { ?&gt;
&gt;             &quot;&lt;?php echo $name; ?&gt;&quot;: &quot;&lt;?php echo $value; ?&gt;&quot;,
&gt;     &lt;?php } ?&gt;
&gt;         },
&gt;         &quot;post&quot;: {
&gt;     &lt;?php foreach ($_POST as $name =&gt; $value) { ?&gt;
&gt;             &quot;&lt;?php echo $name; ?&gt;&quot;: &quot;&lt;?php echo $value; ?&gt;&quot;,
&gt;     &lt;?php } ?&gt;
&gt;         },
&gt;     }
&gt; ```

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/resources/intercept-request-overriden-page.html:4
&gt;&gt; +				&lt;script src=&quot;../resources/inspector-test.js&quot;&gt;
&gt; 
&gt; Why is this included in this file?

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/resources/intercept-request-overriden-page.html:8
&gt;&gt; +				&lt;p&gt;Overridden page content&lt;/p&gt;
&gt; 
&gt; indentation Oops?

Yeah, something went wrong.

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:25
&gt;&gt; +    let suite = ProtocolTest.createAsyncSuite(&quot;Network request interception&quot;);
&gt; 
&gt; This one i&apos;d name `Network.interceptRequest` 😅

Done.

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:42
&gt;&gt; +                InspectorProtocol.awaitCommand({method: &quot;Runtime.enable&quot;, params: {}}),
&gt; 
&gt; NIT: you could put these outside of a test case, as the protocol, is sequential so we know that the `Runtime.evaluate` won&apos;t run until these are done

Doesn&apos;t seem to hurt

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:77
&gt;&gt; +                    stage: &quot;request&quot;,
&gt; 
&gt; this should use the enum `InspectorBackend.Enum.Network.NetworkStage.Request`

No such thing in protocol tests I am afraid.

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:104
&gt;&gt; +                    url: url.replace(&apos;data.json&apos;, &apos;data2.json&apos;),
&gt; 
&gt; Please use a better name than &quot;data2&quot;.  How about &quot;data-intercepted&quot;?

Done.

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:129
&gt;&gt; +                InspectorProtocol.awaitCommand({method: &quot;Network.interceptRequestWithResponse&quot;, params: {
&gt; 
&gt; We should have many of the same tests for this as we have for `Network.interceptWithResponse`.
&gt; 
&gt; Also, we should test that the server is _not_ hit when using `Network.interceptRequestWithResponse`.

Yes, those are non-protocol tests, they test the variations of this command. I need http/tests there, so they are front-end tests.

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:163
&gt;&gt; +                    errorType: &quot;Cancellation&quot;,
&gt; 
&gt; this should use the enum `InspectorBackend.Enum.Network.ResourceErrorType.Cancellation`

Same thing, no constants here.

&gt;&gt; LayoutTests/inspector/network/local-resource-override-continue-response.html:49
&gt;&gt; +                InspectorProtocol.awaitCommand({method: &quot;Network.interceptContinue&quot;, params: {requestId: messageObject.params.requestId, stage: &quot;response&quot;}}),
&gt; 
&gt; this should use the enum `InspectorBackend.Enum.Network.NetworkStage.Request`

Done. You mean Response.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658907</commentid>
    <comment_count>28</comment_count>
      <attachid>400976</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-03 15:56:30 -0700</bug_when>
    <thetext>Created attachment 400976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659176</commentid>
    <comment_count>29</comment_count>
      <attachid>400510</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-04 10:58:38 -0700</bug_when>
    <thetext>Comment on attachment 400510
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:305
&gt;&gt;&gt; +                { &quot;name&quot;: &quot;headers&quot;, &quot;$ref&quot;: &quot;Headers&quot;, &quot;description&quot;: &quot;HTTP response headers. Pass through original values if unmodified.&quot; }
&gt;&gt; 
&gt;&gt; These should all probably be optional.
&gt; 
&gt; We need to populate the request with content, mime &amp; status. Headers could be optional, but I thought of making them also required to emphasize that user is responsible for the entirety of the response.

If they&apos;re not optional, then the &quot;Pass through original values if unmodified.&quot; makes less sense and is more cumbersome, as that would mean I&apos;d have to provide an empty string instead of not providing the parameter at all.

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.h:167
&gt;&gt;&gt; +        PendingInterceptRequest(ResourceLoader* loader, CompletionHandler&lt;void(const ResourceRequest*)&gt;&amp;&amp; completionHandler)
&gt;&gt; 
&gt;&gt; NIT: can we pass `ResourceLoader&amp;` and do `&amp;loader` here instead?  That way, we know with certainty that when we create this object the `loader` exists (e.g. a caller can&apos;t pass `nullptr`).
&gt; 
&gt; It is actually created from within our code that ensures it is non-null. I like raw pointer more because we are storing it in a RefPtr after all.

If you want a `RefPtr`, then can you make the constructor parameter a `RefPtr&lt;ResourceLoader&gt;`?  We should avoid using raw pointers as much as possible.

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:911
&gt;&gt;&gt; +        this.dispatchEventToListeners(WI.NetworkManager.Event.RequestIntercepted, {target, requestId, request});
&gt;&gt; 
&gt;&gt; This could have a FIXME with a bug link for adding request interception support to the frontend :)
&gt; 
&gt; Is there a bug I could refer to? Hesitant requesting something like that. I.e. I can imagine local overrides using the new logic, but not sure what user-facing feature that would be.

We 100% want to add a UI for this in the frontend.  It would be _very_ useful for many of our users.  We have some internal mockups for what this would look like.

It&apos;s fine if you don&apos;t want to make a new bug for it, but at least a FIXME comment would let others know that this is the place to add things in case they&apos;re unfamiliar with what&apos;s already been implemented :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659177</commentid>
    <comment_count>30</comment_count>
      <attachid>400976</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-04 10:59:26 -0700</bug_when>
    <thetext>Comment on attachment 400976
Patch

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

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:863
&gt; +        if (intercept.networkStage != networkStage)
&gt; +            continue;
&gt; +        if (intercept.url.isEmpty())
&gt; +            return true;

NIT: I really would prefer if you added newlines after control flow statements like this.  I realize that it&apos;s not written down in the WebKit style guide, but if you look at the rest of this file (and the majority of other Web Inspector files), you&apos;ll find that we add newlines for clarity as a way of &quot;highlighting&quot; control flow.  If you feel really strongly about keeping it as is that&apos;s fine (like I said it&apos;s not written down), but we&apos;d appreciate matching the style of the surrounding/related code :)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1068
&gt; +        errorString = &quot;Intercept for given url, given isRegex and given stage already exists&quot;_s;

NIT: oxford comma 😅

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1157
&gt; +        {

Style: this is not how WebKit does `case` blocks.  Please remove the `{` and `}` and de-indent.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1159
&gt; +            auto pendingInterceptRequest = m_pendingInterceptRequests.take(requestId);
&gt; +            if (pendingInterceptRequest)

NIT: why not put this inside the `if`?

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1292
&gt; +    loader-&gt;didReceiveResponse(response, [loader, buffer = data.releaseNonNull()]() mutable {

You&apos;re capturing `loader` by value.  Do you mean to do that, or can we do an auto-capture by reference instead?
```
    loader-&gt;didReceiveResponse(response, [&amp;, buffer = data.releaseNonNull()]() mutable {
```

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1295
&gt; +        loader-&gt;didFinishLoading(NetworkLoadMetrics());

Should we provide at least some amount of timing info?  I think we could set the `fetchStart`, `requestStart`, and `responseStart` to something like `resourceLoader-&gt;loadTiming().fetchStart()`

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:235
&gt; +        if (resourceLoader.options().serviceWorkerRegistrationIdentifier || !InspectorInstrumentationWebKit::shouldInterceptRequest(resourceLoader.frame(), resourceLoader.request())) {

NIT: I&apos;d switch this and put the inspector bits inside the `if` and leave the existing code as is, as that way the inspector bits are grouped
```
    if (!resourceLoader.options().serviceWorkerRegistrationIdentifier &amp;&amp; InspectorInstrumentationWebKit::shouldInterceptRequest(resourceLoader.frame(), resourceLoader.request())) {
        InspectorInstrumentationWebKit::interceptRequest(resourceLoader, [&amp;this, protectedResourceLoader = makeRefPtr(&amp;resourceLoader), &amp;trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, &amp;resource](const ResourceRequest&amp; request) {
            scheduleLoadFromNetworkProcess(*protectedResourceLoader, request, trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime(resource));
        });
        return;
    }

    scheduleLoadFromNetworkProcess(resourceLoader, resourceLoader.request(), trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime(resource));
```

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:240
&gt; +        InspectorInstrumentationWebKit::interceptRequest(resourceLoader, [this, protectedResourceLoader = makeRefPtr(&amp;resourceLoader), trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, resource](const ResourceRequest&amp; request) mutable {

Ditto (InspectorNetworkAgent.cpp:235)

Also, I&apos;m fairly certain that this does not need to be `mutable`.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:242
&gt; +            return;

NIT: unnecessary `return`

&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py:-182
&gt; -        _log.debug(&apos;Starting %s server, cmd=&quot;%s&quot;&apos; % (self._name, str(self._start_cmd)))

why was this changed?

&gt; LayoutTests/inspector/network/intercept-request.html:43
&gt; +                InspectorProtocol.awaitCommand({method: &quot;Runtime.evaluate&quot;, params: {

As I&apos;ve mentioned, this is not Web Inspector style/parlance.  Please either inline the entire object or prettify it.

```
    InspectorProtocol.awaitCommand({method: &quot;Runtime.evaluate&quot;, params: {expression: &quot;document.URL&quot;}});
```

 or

```
    InspectorProtocol.awaitCommand({
        method: &quot;Runtime.evaluate&quot;,
        params: {
            expression: &quot;document.URL&quot;.
        },
    });
```

If you feel strongly about this style you&apos;re welcome to bring it up with the other Web Inspector developers/reviewers and we can all come to a consensus, but until then this is not our style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659187</commentid>
    <comment_count>31</comment_count>
      <attachid>400510</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-04 11:04:38 -0700</bug_when>
    <thetext>Comment on attachment 400510
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:305
&gt;&gt;&gt;&gt; +                { &quot;name&quot;: &quot;headers&quot;, &quot;$ref&quot;: &quot;Headers&quot;, &quot;description&quot;: &quot;HTTP response headers. Pass through original values if unmodified.&quot; }
&gt;&gt;&gt; 
&gt;&gt;&gt; These should all probably be optional.
&gt;&gt; 
&gt;&gt; We need to populate the request with content, mime &amp; status. Headers could be optional, but I thought of making them also required to emphasize that user is responsible for the entirety of the response.
&gt; 
&gt; If they&apos;re not optional, then the &quot;Pass through original values if unmodified.&quot; makes less sense and is more cumbersome, as that would mean I&apos;d have to provide an empty string instead of not providing the parameter at all.

Oh I see what you&apos;re referring to.  Yeah I think it makes sense for these to _not_ be optional since there is no &quot;original response&quot;.  As such, I&apos;d just remove that part of the description :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659917</commentid>
    <comment_count>32</comment_count>
      <attachid>401237</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-05 22:37:02 -0700</bug_when>
    <thetext>Created attachment 401237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659918</commentid>
    <comment_count>33</comment_count>
      <attachid>400510</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-05 22:37:17 -0700</bug_when>
    <thetext>Comment on attachment 400510
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:305
&gt;&gt;&gt;&gt;&gt; +                { &quot;name&quot;: &quot;headers&quot;, &quot;$ref&quot;: &quot;Headers&quot;, &quot;description&quot;: &quot;HTTP response headers. Pass through original values if unmodified.&quot; }
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; These should all probably be optional.
&gt;&gt;&gt; 
&gt;&gt;&gt; We need to populate the request with content, mime &amp; status. Headers could be optional, but I thought of making them also required to emphasize that user is responsible for the entirety of the response.
&gt;&gt; 
&gt;&gt; If they&apos;re not optional, then the &quot;Pass through original values if unmodified.&quot; makes less sense and is more cumbersome, as that would mean I&apos;d have to provide an empty string instead of not providing the parameter at all.
&gt; 
&gt; Oh I see what you&apos;re referring to.  Yeah I think it makes sense for these to _not_ be optional since there is no &quot;original response&quot;.  As such, I&apos;d just remove that part of the description :P

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1089
&gt;&gt;          errorString = &quot;Missing intercept for given url and given isRegex&quot;_s;
&gt; 
&gt; ditto (:1070)

Done

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1161
&gt;&gt;&gt; +        errorString = &quot;Missing pending intercept request for given requestId&quot;_s;
&gt;&gt; 
&gt;&gt; we should have a test for this path
&gt; 
&gt; [Carry over]: Adding this in a follow-up patch.

Done, http/tests/inspector/network/intercept-request-continue.html

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1265
&gt;&gt;&gt; +        errorString = &quot;Unable to fulfill request, it has already been processed&quot;_s;
&gt;&gt; 
&gt;&gt; we should have a test for this path
&gt; 
&gt; [Carry over]: Adding this in a follow-up patch.

Done. http/tests/inspector/network/intercept-aborted-request.html

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1310
&gt;&gt;&gt; +        errorString = &quot;Unable to abort request, it has already been processed&quot;_s;
&gt;&gt; 
&gt;&gt; we should have a test for this path
&gt; 
&gt; [Carry over]: Adding this in a follow-up patch.

Done. http/tests/inspector/network/intercept-aborted-request.html

&gt;&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.h:167
&gt;&gt;&gt;&gt; +        PendingInterceptRequest(ResourceLoader* loader, CompletionHandler&lt;void(const ResourceRequest*)&gt;&amp;&amp; completionHandler)
&gt;&gt;&gt; 
&gt;&gt;&gt; NIT: can we pass `ResourceLoader&amp;` and do `&amp;loader` here instead?  That way, we know with certainty that when we create this object the `loader` exists (e.g. a caller can&apos;t pass `nullptr`).
&gt;&gt; 
&gt;&gt; It is actually created from within our code that ensures it is non-null. I like raw pointer more because we are storing it in a RefPtr after all.
&gt; 
&gt; If you want a `RefPtr`, then can you make the constructor parameter a `RefPtr&lt;ResourceLoader&gt;`?  We should avoid using raw pointers as much as possible.

Done.

&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:911
&gt;&gt;&gt;&gt; +        this.dispatchEventToListeners(WI.NetworkManager.Event.RequestIntercepted, {target, requestId, request});
&gt;&gt;&gt; 
&gt;&gt;&gt; This could have a FIXME with a bug link for adding request interception support to the frontend :)
&gt;&gt; 
&gt;&gt; Is there a bug I could refer to? Hesitant requesting something like that. I.e. I can imagine local overrides using the new logic, but not sure what user-facing feature that would be.
&gt; 
&gt; We 100% want to add a UI for this in the frontend.  It would be _very_ useful for many of our users.  We have some internal mockups for what this would look like.
&gt; 
&gt; It&apos;s fine if you don&apos;t want to make a new bug for it, but at least a FIXME comment would let others know that this is the place to add things in case they&apos;re unfamiliar with what&apos;s already been implemented :)

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659919</commentid>
    <comment_count>34</comment_count>
      <attachid>401238</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-05 23:15:10 -0700</bug_when>
    <thetext>Created attachment 401238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659920</commentid>
    <comment_count>35</comment_count>
      <attachid>400976</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-05 23:15:31 -0700</bug_when>
    <thetext>Comment on attachment 400976
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:863
&gt;&gt; +            return true;
&gt; 
&gt; NIT: I really would prefer if you added newlines after control flow statements like this.  I realize that it&apos;s not written down in the WebKit style guide, but if you look at the rest of this file (and the majority of other Web Inspector files), you&apos;ll find that we add newlines for clarity as a way of &quot;highlighting&quot; control flow.  If you feel really strongly about keeping it as is that&apos;s fine (like I said it&apos;s not written down), but we&apos;d appreciate matching the style of the surrounding/related code :)

Done

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1068
&gt;&gt; +        errorString = &quot;Intercept for given url, given isRegex and given stage already exists&quot;_s;
&gt; 
&gt; NIT: oxford comma 😅

Done

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1157
&gt;&gt; +        {
&gt; 
&gt; Style: this is not how WebKit does `case` blocks.  Please remove the `{` and `}` and de-indent.

I needed a scope here for the pending request, but inlining it into if() gives me that scope.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1159
&gt;&gt; +            if (pendingInterceptRequest)
&gt; 
&gt; NIT: why not put this inside the `if`?

Done

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1292
&gt;&gt; +    loader-&gt;didReceiveResponse(response, [loader, buffer = data.releaseNonNull()]() mutable {
&gt; 
&gt; You&apos;re capturing `loader` by value.  Do you mean to do that, or can we do an auto-capture by reference instead?
&gt; ```
&gt;     loader-&gt;didReceiveResponse(response, [&amp;, buffer = data.releaseNonNull()]() mutable {
&gt; ```

`loader` is a RefPtr on the stack, capturing it by reference would result in use after free. I do need to retain the loader until my call.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1295
&gt;&gt; +        loader-&gt;didFinishLoading(NetworkLoadMetrics());
&gt; 
&gt; Should we provide at least some amount of timing info?  I think we could set the `fetchStart`, `requestStart`, and `responseStart` to something like `resourceLoader-&gt;loadTiming().fetchStart()`

NetworkLoadMetrics populates window.performance API for client-side instrumentation. We can add those, but I don&apos;t think this is necessary since we are &apos;debugging&apos; / &apos;overriding&apos; the page and reporting the performance data back to the origin does not make much sense in this case.

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:235
&gt;&gt; +        if (resourceLoader.options().serviceWorkerRegistrationIdentifier || !InspectorInstrumentationWebKit::shouldInterceptRequest(resourceLoader.frame(), resourceLoader.request())) {
&gt; 
&gt; NIT: I&apos;d switch this and put the inspector bits inside the `if` and leave the existing code as is, as that way the inspector bits are grouped
&gt; ```
&gt;     if (!resourceLoader.options().serviceWorkerRegistrationIdentifier &amp;&amp; InspectorInstrumentationWebKit::shouldInterceptRequest(resourceLoader.frame(), resourceLoader.request())) {
&gt;         InspectorInstrumentationWebKit::interceptRequest(resourceLoader, [&amp;this, protectedResourceLoader = makeRefPtr(&amp;resourceLoader), &amp;trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, &amp;resource](const ResourceRequest&amp; request) {
&gt;             scheduleLoadFromNetworkProcess(*protectedResourceLoader, request, trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime(resource));
&gt;         });
&gt;         return;
&gt;     }
&gt; 
&gt;     scheduleLoadFromNetworkProcess(resourceLoader, resourceLoader.request(), trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime(resource));
&gt; ```

Done. But we should not capture stack objects by reference - that all leads to use after free.

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:240
&gt;&gt; +        InspectorInstrumentationWebKit::interceptRequest(resourceLoader, [this, protectedResourceLoader = makeRefPtr(&amp;resourceLoader), trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, resource](const ResourceRequest&amp; request) mutable {
&gt; 
&gt; Ditto (InspectorNetworkAgent.cpp:235)
&gt; 
&gt; Also, I&apos;m fairly certain that this does not need to be `mutable`.

Done.

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:242
&gt;&gt; +            return;
&gt; 
&gt; NIT: unnecessary `return`

Done.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py:-182
&gt;&gt; -        _log.debug(&apos;Starting %s server, cmd=&quot;%s&quot;&apos; % (self._name, str(self._start_cmd)))
&gt; 
&gt; why was this changed?

Done, reverted.

&gt;&gt; LayoutTests/inspector/network/intercept-request.html:43
&gt;&gt; +                InspectorProtocol.awaitCommand({method: &quot;Runtime.evaluate&quot;, params: {
&gt; 
&gt; As I&apos;ve mentioned, this is not Web Inspector style/parlance.  Please either inline the entire object or prettify it.
&gt; 
&gt; ```
&gt;     InspectorProtocol.awaitCommand({method: &quot;Runtime.evaluate&quot;, params: {expression: &quot;document.URL&quot;}});
&gt; ```
&gt; 
&gt;  or
&gt; 
&gt; ```
&gt;     InspectorProtocol.awaitCommand({
&gt;         method: &quot;Runtime.evaluate&quot;,
&gt;         params: {
&gt;             expression: &quot;document.URL&quot;.
&gt;         },
&gt;     });
&gt; ```
&gt; 
&gt; If you feel strongly about this style you&apos;re welcome to bring it up with the other Web Inspector developers/reviewers and we can all come to a consensus, but until then this is not our style.

Done. I removed this test, it is now redundant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661587</commentid>
    <comment_count>36</comment_count>
      <attachid>401646</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-11 08:18:06 -0700</bug_when>
    <thetext>Created attachment 401646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661597</commentid>
    <comment_count>37</comment_count>
      <attachid>401648</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-11 08:29:57 -0700</bug_when>
    <thetext>Created attachment 401648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662198</commentid>
    <comment_count>38</comment_count>
      <attachid>401648</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-12 15:28:39 -0700</bug_when>
    <thetext>Comment on attachment 401648
Patch

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

r-, as I think there a couple more edge cases we should test (i imagine the next iteration will be perfect to land), but this is looking phenomenal!
Really well done! =D
Thanks for iterating on it with me :)

&gt; Source/JavaScriptCore/inspector/protocol/Network.json:285
&gt; +                { &quot;name&quot;: &quot;method&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true,&quot;description&quot;: &quot;HTTP request method.&quot; },
&gt; +                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true,&quot;description&quot;: &quot;HTTP request url.&quot; },

NIT: we should put `url` above/before `method` to match the ordering in `Network.Request`.

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1089
&gt; +        errorString = &quot;Missing intercept for given url, given isRegex, and given stage already exists&quot;_s;

remove the &quot;already exists&quot; (perhaps a copypaste error?)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1176
&gt; +    if (pendingRequest) {

NIT: you could flip this and have the error be an early return so most of this code is less indented if you wanted
```
    if (!pendingRequest) {
        errorString = &quot;Missing pending intercept request for given requestId&quot;_s;
        return;
    }

    auto&amp; request = pendingRequest-&gt;m_loader-&gt;request();
    ...
```

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1177
&gt; +        ResourceLoader* loader = pendingRequest-&gt;m_loader.get();

Why not dereference it here instead of keeping it as a pointer?
```
    auto&amp; loader = *pendingRequest-&gt;m_loader;
```

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1200
&gt; +        pendingRequest-&gt;continueWithRequest(request);

we might want a FIXME here for when we add this to the frontend to figure out how to identify when a request has been overridden (i.e. add a `ResourceRequestBase::Requester::InspectorOverride` and somehow send it to the frontend)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1259
&gt; +    RefPtr&lt;ResourceLoader&gt; loader = pendingRequest-&gt;m_loader.get();

Ditto (:1177)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1260
&gt; +    if (!loader-&gt;identifier()) {

Should this be `reachedTerminalState()`?

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1282
&gt; +    for (auto&amp; header : headers) {

NIT: you could use structured binding
```
    for (auto&amp; [key, value] : *headers) {
```

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1304
&gt; +    ResourceLoader* loader = pendingRequest-&gt;m_loader.get();

Ditto (:1177)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1305
&gt; +    if (!loader-&gt;identifier()) {

Ditto (:1260)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1316
&gt; +    ResourceError error;

NIT: is there that much benefit to creating this variable vs just calling `loader-&gt;didFail` inside each `case`?
```
    switch (errorType.value()) {
    case Inspector::Protocol::Network::ResourceErrorType::General:
        loader-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, loader-&gt;url(), &quot;Request intercepted&quot;_s, ResourceError::Type::General));
        return;

    case Inspector::Protocol::Network::ResourceErrorType::AccessControl:
        loader-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, loader-&gt;url(), &quot;Access denied&quot;_s, ResourceError::Type::AccessControl));
        return;

    case Inspector::Protocol::Network::ResourceErrorType::Cancellation:
        loader-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, loader-&gt;url(), &quot;Request canceled&quot;_s, ResourceError::Type::Cancellation));
        return;

    case Inspector::Protocol::Network::ResourceErrorType::Timeout:
        loader-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, loader-&gt;url(), &quot;Request timed out&quot;_s, ResourceError::Type::Timeout));
        return;
    }

    ASSERT_NOT_REACHED();
```

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1332
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return;

NIT: is this actually necessary?  i would think not because the `switch` handles all of the `enum` values 🤔

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.h:167
&gt; +        PendingInterceptRequest(RefPtr&lt;ResourceLoader&gt; loader, CompletionHandler&lt;void(const ResourceRequest&amp;)&gt;&amp;&amp; completionHandler)

Can we make this either a `RefPtr&lt;ResourceLoader&gt;&amp;` or `RefPtr&lt;ResourceLoader&gt;&amp;&amp;`?

&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:913
&gt; +        // FIXME: add request interception support to the frontend.

Thanks!

&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:914
&gt; +        this.dispatchEventToListeners(WI.NetworkManager.Event.RequestIntercepted, {target, requestId, request});

NIT: do we need to include `target`?  The Network domain only supports the main target right now anyways, so it should be equivalent to `WI.mainTarget`.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:-232
&gt; -        return;

I think we want to keep this, as otherwise we will incorrectly hit the log below

&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:9
&gt; +async function fetchAndAbort() {

Can we test that it works the same with `XMLHttpRequest.prototype.abort` too, or does that have the same codepath?

&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:19
&gt; +    InspectorTest.debug();

oops

&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:21
&gt; +    let target = WI.assumingMainTarget();

You don&apos;t need to do this in tests.  `window.FooAgent` is a getter for `WI.mainTarget.FooAgent`.

&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:26
&gt; +            await target.NetworkAgent.addInterception.invoke({

NIT: you can do this outside of a test case, as it is guaranteed to evaluate before any other protocol messaging

&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:36
&gt; +        async test() {

This test reads pretty oddly, as I have to jump up and down in the code to follow the logic.  I think there&apos;s a way of making it simpler and more linear/straightforward:
```
    async test() {
        InspectorTest.log(&quot;Triggering load...&quot;);
        let [requestInterceptedEvent] = await Promise.all([
            WI.networkManager.awaitEvent(WI.NetworkManager.Event.RequestIntercepted),
            InspectorTest.evaluateInPage(`fetchAndAbort()`),
        ]);

        await InspectorTest.expectException(async () =&gt; {
            await NetworkAgent.interceptRequestWithResponse.invoke({
                requestId: requestInterceptedEvent.data.requestId,
                stage: InspectorBackend.Enum.Network.NetworkStage.Request,
                content: &quot;FAIL&quot;,
                base64Encoded: false,
                mimeType: &quot;text/plain&quot;,
                status: 200,
                statusText: &quot;OK&quot;,
                headers: {},
            });
        });
    }
```
this also matches the flow of most of our (newer) tests :)

&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:38
&gt; +            let interceptRequestWithResponseResult = new Promise(f =&gt; callback =  f);

Style: please use more descriptive names than something like `f`
Style: we always wrap the arguments of an arrow function with parenthesis
Style: extra space
```
    let interceptRequestWithResponseResult = new Promise((resolve) =&gt; callback = resolve);
```

&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:60
&gt; +            const error = await interceptRequestWithResponseResult;

Style: we normally only use `const` for things that are truly constant

&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:69
&gt; +        async test() {

Ditto (:36)

&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:99
&gt; +&lt;script src=&quot;resources/override.js&quot;&gt;&lt;/script&gt;

Is this needed for this test?

&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:16
&gt; +    let target = WI.assumingMainTarget();

Ditto (intercept-aborted-request.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:21
&gt; +            await target.NetworkAgent.addInterception.invoke({

Ditto (intercept-aborted-request.html:26)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:53
&gt; +        async test() {

Ditto (intercept-aborted-request.html:36)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:80
&gt; +        async test() {

Ditto (intercept-aborted-request.html:36)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:15
&gt; +            let target = WI.assumingMainTarget();

Ditto (intercept-aborted-request.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:21
&gt; +            let interceptWithResponse = (event) =&gt; {

Why create a variable instead of inlining this in the `addEventListener` call?

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:33
&gt; +            WI.networkManager.addEventListener(WI.NetworkManager.Event.RequestIntercepted, interceptWithResponse);

Please use either `awaitEvent` (and a `Promise`) or `singleFireEventListener` if you&apos;re not going to remove the event listener before this test cases finishes.  It _shouldn&apos;t_ be a problem to leave the event listener like this, but there have been issues with how state is reset between tests in the past so i&apos;d like to avoid exacerbating any possible issues by leaving event listeners around.

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:35
&gt; +            InspectorTest.reloadPage({ignoreCache: false, revalidateAllResources: true});

Please `await` this.  Because this test case is `async`, I can imagine this failing (being flaky) if there is too much time between this returning and the `WI.NetworkManager.Event.RequestIntercepted` being fired.

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:15
&gt; +            let target = WI.assumingMainTarget();

Ditto (intercept-aborted-request.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:21
&gt; +            let interceptWithRequest = (event) =&gt; {

Ditto (intercept-request-main-resource-with-response.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:25
&gt; +                    requestId

Style: missing trailing comma

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:28
&gt; +            WI.networkManager.addEventListener(WI.NetworkManager.Event.RequestIntercepted, interceptWithRequest);

Ditto (intercept-request-main-resource-with-response.html:33)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:30
&gt; +            InspectorTest.reloadPage({ignoreCache: false, revalidateAllResources: true});

Ditto (intercept-request-main-resource-with-response.html:35)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:12
&gt; +    data[&quot;responseURL&quot;] = response.url;

`data.responseURL`?

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:21
&gt; +            &quot;Content-Type&quot;: &quot;application/x-www-form-urlencoded&quot;

Ditto (intercept-request-main-resource.html:25)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:23
&gt; +        body: &quot;value=original&quot;

Ditto (intercept-request-main-resource.html:25)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:27
&gt; +    data[&quot;responseURL&quot;] = response.url;

Ditto (:12)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:34
&gt; +    let target = WI.assumingMainTarget();

Ditto (intercept-aborted-request.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:39
&gt; +            await target.NetworkAgent.addInterception.invoke({

Ditto (intercept-aborted-request.html:26)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:91
&gt; +            async test() {

Ditto (intercept-aborted-request.html:36)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:134
&gt; +        description: &quot;Tests request method interception with NONSTANDARD&quot;,

oops

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:140
&gt; +        name: &quot;Network.interceptRequest.Url&quot;,

NIT: s/Url/URL

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:147
&gt; +        name: &quot;Network.interceptRequest.UrlFragment&quot;,

Ditto (:140)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:150
&gt; +        overrides: { url: &quot;http://127.0.0.1:8000/inspector/network/resources/intercept-echo.php#fragment&quot; },

Can we add a test (or modify these tests) to check that the URL of the corresponding `WI.Resource` response matches?  I&apos;d like to test/confirm that fragments eventually make it back to the response (or if not to make sure that it stays that way).

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:154
&gt; +        name: &quot;Network.interceptRequest.UrlEmpty&quot;,

Ditto (:140)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:15
&gt; +            let target = WI.assumingMainTarget();

Ditto (intercept-aborted-request.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:21
&gt; +            let interceptWithRequest = (event) =&gt; {

Ditto (intercept-request-main-resource-with-response.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:25
&gt; +                    errorType: InspectorBackend.Enum.Network.ResourceErrorType.General,

Can we test that this error is actually used?  AFAICT, the only way to confirm that this test is actually working is the fact that there is only one ALERT, which is not very immediately identifiable.  We should be able to check that the `override.js` resource actually errored and that the error matches what we want.

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:28
&gt; +            WI.networkManager.addEventListener(WI.NetworkManager.Event.RequestIntercepted, interceptWithRequest);

Ditto (intercept-request-main-resource-with-response.html:33)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-response.html:15
&gt; +            let target = WI.assumingMainTarget();

Ditto (intercept-aborted-request.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-response.html:22
&gt; +            let interceptWithRequest = (event) =&gt; {

Ditto (intercept-request-main-resource-with-response.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-response.html:34
&gt; +            WI.networkManager.addEventListener(WI.NetworkManager.Event.RequestIntercepted, interceptWithRequest);

Ditto (intercept-request-main-resource-with-response.html:33)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource.html:15
&gt; +            let target = WI.assumingMainTarget();

Ditto (intercept-aborted-request.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource.html:20
&gt; +            let interceptWithRequest = (event) =&gt; {

Ditto (intercept-request-main-resource-with-response.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource.html:24
&gt; +                    requestId

Ditto (intercept-request-main-resource.html:25)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource.html:27
&gt; +            WI.networkManager.addEventListener(WI.NetworkManager.Event.RequestIntercepted, interceptWithRequest);

Ditto (intercept-request-main-resource-with-response.html:33)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:21
&gt; +            headers: [...response.headers]

`Array.from`?
Ditto (intercept-request-main-resource.html:25)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:30
&gt; +    InspectorTest.debug();

oops

&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:32
&gt; +    let target = WI.assumingMainTarget();

Ditto (intercept-aborted-request.html:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:37
&gt; +            await target.NetworkAgent.addInterception.invoke({

Ditto (intercept-aborted-request.html:26)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:50
&gt; +        let keys = [...response.headers.keys()];

Ditto (:21)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:64
&gt; +            async test() {

Ditto (intercept-aborted-request.html:36)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:148
&gt; +        expression: `triggerOverrideLoad(&quot;#frag&quot;)`,

Ditto (intercept-request-properties.html:150)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662320</commentid>
    <comment_count>39</comment_count>
      <attachid>401823</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-12 21:06:46 -0700</bug_when>
    <thetext>Created attachment 401823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662322</commentid>
    <comment_count>40</comment_count>
      <attachid>401648</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-12 21:07:54 -0700</bug_when>
    <thetext>Comment on attachment 401648
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Network.json:285
&gt;&gt; +                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true,&quot;description&quot;: &quot;HTTP request url.&quot; },
&gt; 
&gt; NIT: we should put `url` above/before `method` to match the ordering in `Network.Request`.

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1089
&gt;&gt; +        errorString = &quot;Missing intercept for given url, given isRegex, and given stage already exists&quot;_s;
&gt; 
&gt; remove the &quot;already exists&quot; (perhaps a copypaste error?)

Done

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1176
&gt;&gt; +    if (pendingRequest) {
&gt; 
&gt; NIT: you could flip this and have the error be an early return so most of this code is less indented if you wanted
&gt; ```
&gt;     if (!pendingRequest) {
&gt;         errorString = &quot;Missing pending intercept request for given requestId&quot;_s;
&gt;         return;
&gt;     }
&gt; 
&gt;     auto&amp; request = pendingRequest-&gt;m_loader-&gt;request();
&gt;     ...
&gt; ```

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1177
&gt;&gt; +        ResourceLoader* loader = pendingRequest-&gt;m_loader.get();
&gt; 
&gt; Why not dereference it here instead of keeping it as a pointer?
&gt; ```
&gt;     auto&amp; loader = *pendingRequest-&gt;m_loader;
&gt; ```

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1200
&gt;&gt; +        pendingRequest-&gt;continueWithRequest(request);
&gt; 
&gt; we might want a FIXME here for when we add this to the frontend to figure out how to identify when a request has been overridden (i.e. add a `ResourceRequestBase::Requester::InspectorOverride` and somehow send it to the frontend)

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1259
&gt;&gt; +    RefPtr&lt;ResourceLoader&gt; loader = pendingRequest-&gt;m_loader.get();
&gt; 
&gt; Ditto (:1177)

Can&apos;t do it here - I&apos;m retaining this refprt.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1260
&gt;&gt; +    if (!loader-&gt;identifier()) {
&gt; 
&gt; Should this be `reachedTerminalState()`?

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1282
&gt;&gt; +    for (auto&amp; header : headers) {
&gt; 
&gt; NIT: you could use structured binding
&gt; ```
&gt;     for (auto&amp; [key, value] : *headers) {
&gt; ```

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1304
&gt;&gt; +    ResourceLoader* loader = pendingRequest-&gt;m_loader.get();
&gt; 
&gt; Ditto (:1177)

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1305
&gt;&gt; +    if (!loader-&gt;identifier()) {
&gt; 
&gt; Ditto (:1260)

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1316
&gt;&gt; +    ResourceError error;
&gt; 
&gt; NIT: is there that much benefit to creating this variable vs just calling `loader-&gt;didFail` inside each `case`?
&gt; ```
&gt;     switch (errorType.value()) {
&gt;     case Inspector::Protocol::Network::ResourceErrorType::General:
&gt;         loader-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, loader-&gt;url(), &quot;Request intercepted&quot;_s, ResourceError::Type::General));
&gt;         return;
&gt; 
&gt;     case Inspector::Protocol::Network::ResourceErrorType::AccessControl:
&gt;         loader-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, loader-&gt;url(), &quot;Access denied&quot;_s, ResourceError::Type::AccessControl));
&gt;         return;
&gt; 
&gt;     case Inspector::Protocol::Network::ResourceErrorType::Cancellation:
&gt;         loader-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, loader-&gt;url(), &quot;Request canceled&quot;_s, ResourceError::Type::Cancellation));
&gt;         return;
&gt; 
&gt;     case Inspector::Protocol::Network::ResourceErrorType::Timeout:
&gt;         loader-&gt;didFail(ResourceError(errorDomainWebKitInternal, 0, loader-&gt;url(), &quot;Request timed out&quot;_s, ResourceError::Type::Timeout));
&gt;         return;
&gt;     }
&gt; 
&gt;     ASSERT_NOT_REACHED();
&gt; ```

I&apos;d prefer to leave it as is and keep a single return statement in this case for readability.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1332
&gt;&gt; +        return;
&gt; 
&gt; NIT: is this actually necessary?  i would think not because the `switch` handles all of the `enum` values 🤔

It handles all, but I will remove the assertion and default to general.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.h:167
&gt;&gt; +        PendingInterceptRequest(RefPtr&lt;ResourceLoader&gt; loader, CompletionHandler&lt;void(const ResourceRequest&amp;)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; Can we make this either a `RefPtr&lt;ResourceLoader&gt;&amp;` or `RefPtr&lt;ResourceLoader&gt;&amp;&amp;`?

I&apos;m passing &amp;loader into this constructor, so neither would make much sense.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:914
&gt;&gt; +        this.dispatchEventToListeners(WI.NetworkManager.Event.RequestIntercepted, {target, requestId, request});
&gt; 
&gt; NIT: do we need to include `target`?  The Network domain only supports the main target right now anyways, so it should be equivalent to `WI.mainTarget`.

Does not matter to me much, but it seems logical to pass it for attribution.

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:-232
&gt;&gt; -        return;
&gt; 
&gt; I think we want to keep this, as otherwise we will incorrectly hit the log below

Done. Thanks, that&apos;s what I meant by the review churn - things start falling through the cracks.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:9
&gt;&gt; +async function fetchAndAbort() {
&gt; 
&gt; Can we test that it works the same with `XMLHttpRequest.prototype.abort` too, or does that have the same codepath?

Both should land in the ThreadedLoader::cancel(), but I&apos;m adding tests for failures.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:19
&gt;&gt; +    InspectorTest.debug();
&gt; 
&gt; oops

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:21
&gt;&gt; +    let target = WI.assumingMainTarget();
&gt; 
&gt; You don&apos;t need to do this in tests.  `window.FooAgent` is a getter for `WI.mainTarget.FooAgent`.

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:26
&gt;&gt; +            await target.NetworkAgent.addInterception.invoke({
&gt; 
&gt; NIT: you can do this outside of a test case, as it is guaranteed to evaluate before any other protocol messaging

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:36
&gt;&gt; +        async test() {
&gt; 
&gt; This test reads pretty oddly, as I have to jump up and down in the code to follow the logic.  I think there&apos;s a way of making it simpler and more linear/straightforward:
&gt; ```
&gt;     async test() {
&gt;         InspectorTest.log(&quot;Triggering load...&quot;);
&gt;         let [requestInterceptedEvent] = await Promise.all([
&gt;             WI.networkManager.awaitEvent(WI.NetworkManager.Event.RequestIntercepted),
&gt;             InspectorTest.evaluateInPage(`fetchAndAbort()`),
&gt;         ]);
&gt; 
&gt;         await InspectorTest.expectException(async () =&gt; {
&gt;             await NetworkAgent.interceptRequestWithResponse.invoke({
&gt;                 requestId: requestInterceptedEvent.data.requestId,
&gt;                 stage: InspectorBackend.Enum.Network.NetworkStage.Request,
&gt;                 content: &quot;FAIL&quot;,
&gt;                 base64Encoded: false,
&gt;                 mimeType: &quot;text/plain&quot;,
&gt;                 status: 200,
&gt;                 statusText: &quot;OK&quot;,
&gt;                 headers: {},
&gt;             });
&gt;         });
&gt;     }
&gt; ```
&gt; this also matches the flow of most of our (newer) tests :)

Done. I thought you did not like multi-line arrow functions in this review.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:38
&gt;&gt; +            let interceptRequestWithResponseResult = new Promise(f =&gt; callback =  f);
&gt; 
&gt; Style: please use more descriptive names than something like `f`
&gt; Style: we always wrap the arguments of an arrow function with parenthesis
&gt; Style: extra space
&gt; ```
&gt;     let interceptRequestWithResponseResult = new Promise((resolve) =&gt; callback = resolve);
&gt; ```

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:60
&gt;&gt; +            const error = await interceptRequestWithResponseResult;
&gt; 
&gt; Style: we normally only use `const` for things that are truly constant

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:69
&gt;&gt; +        async test() {
&gt; 
&gt; Ditto (:36)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-aborted-request.html:99
&gt;&gt; +&lt;script src=&quot;resources/override.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Is this needed for this test?

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:16
&gt;&gt; +    let target = WI.assumingMainTarget();
&gt; 
&gt; Ditto (intercept-aborted-request.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:21
&gt;&gt; +            await target.NetworkAgent.addInterception.invoke({
&gt; 
&gt; Ditto (intercept-aborted-request.html:26)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:53
&gt;&gt; +        async test() {
&gt; 
&gt; Ditto (intercept-aborted-request.html:36)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:80
&gt;&gt; +        async test() {
&gt; 
&gt; Ditto (intercept-aborted-request.html:36)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:15
&gt;&gt; +            let target = WI.assumingMainTarget();
&gt; 
&gt; Ditto (intercept-aborted-request.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:21
&gt;&gt; +            let interceptWithResponse = (event) =&gt; {
&gt; 
&gt; Why create a variable instead of inlining this in the `addEventListener` call?

Done. Somehow I think I&apos;ve done it based on your request in this review.Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:33
&gt;&gt; +            WI.networkManager.addEventListener(WI.NetworkManager.Event.RequestIntercepted, interceptWithResponse);
&gt; 
&gt; Please use either `awaitEvent` (and a `Promise`) or `singleFireEventListener` if you&apos;re not going to remove the event listener before this test cases finishes.  It _shouldn&apos;t_ be a problem to leave the event listener like this, but there have been issues with how state is reset between tests in the past so i&apos;d like to avoid exacerbating any possible issues by leaving event listeners around.

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource-with-response.html:35
&gt;&gt; +            InspectorTest.reloadPage({ignoreCache: false, revalidateAllResources: true});
&gt; 
&gt; Please `await` this.  Because this test case is `async`, I can imagine this failing (being flaky) if there is too much time between this returning and the `WI.NetworkManager.Event.RequestIntercepted` being fired.

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:15
&gt;&gt; +            let target = WI.assumingMainTarget();
&gt; 
&gt; Ditto (intercept-aborted-request.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:21
&gt;&gt; +            let interceptWithRequest = (event) =&gt; {
&gt; 
&gt; Ditto (intercept-request-main-resource-with-response.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:25
&gt;&gt; +                    requestId
&gt; 
&gt; Style: missing trailing comma

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:28
&gt;&gt; +            WI.networkManager.addEventListener(WI.NetworkManager.Event.RequestIntercepted, interceptWithRequest);
&gt; 
&gt; Ditto (intercept-request-main-resource-with-response.html:33)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-main-resource.html:30
&gt;&gt; +            InspectorTest.reloadPage({ignoreCache: false, revalidateAllResources: true});
&gt; 
&gt; Ditto (intercept-request-main-resource-with-response.html:35)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:12
&gt;&gt; +    data[&quot;responseURL&quot;] = response.url;
&gt; 
&gt; `data.responseURL`?

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:21
&gt;&gt; +            &quot;Content-Type&quot;: &quot;application/x-www-form-urlencoded&quot;
&gt; 
&gt; Ditto (intercept-request-main-resource.html:25)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:23
&gt;&gt; +        body: &quot;value=original&quot;
&gt; 
&gt; Ditto (intercept-request-main-resource.html:25)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:27
&gt;&gt; +    data[&quot;responseURL&quot;] = response.url;
&gt; 
&gt; Ditto (:12)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:34
&gt;&gt; +    let target = WI.assumingMainTarget();
&gt; 
&gt; Ditto (intercept-aborted-request.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:39
&gt;&gt; +            await target.NetworkAgent.addInterception.invoke({
&gt; 
&gt; Ditto (intercept-aborted-request.html:26)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:91
&gt;&gt; +            async test() {
&gt; 
&gt; Ditto (intercept-aborted-request.html:36)

Done. Note that I&apos;d need to await the evaluate result anyways.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:134
&gt;&gt; +        description: &quot;Tests request method interception with NONSTANDARD&quot;,
&gt; 
&gt; oops

Done

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:140
&gt;&gt; +        name: &quot;Network.interceptRequest.Url&quot;,
&gt; 
&gt; NIT: s/Url/URL

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:147
&gt;&gt; +        name: &quot;Network.interceptRequest.UrlFragment&quot;,
&gt; 
&gt; Ditto (:140)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:150
&gt;&gt; +        overrides: { url: &quot;http://127.0.0.1:8000/inspector/network/resources/intercept-echo.php#fragment&quot; },
&gt; 
&gt; Can we add a test (or modify these tests) to check that the URL of the corresponding `WI.Resource` response matches?  I&apos;d like to test/confirm that fragments eventually make it back to the response (or if not to make sure that it stays that way).

I already print the Response URL and it does not have fragment.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:154
&gt;&gt; +        name: &quot;Network.interceptRequest.UrlEmpty&quot;,
&gt; 
&gt; Ditto (:140)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:15
&gt;&gt; +            let target = WI.assumingMainTarget();
&gt; 
&gt; Ditto (intercept-aborted-request.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:21
&gt;&gt; +            let interceptWithRequest = (event) =&gt; {
&gt; 
&gt; Ditto (intercept-request-main-resource-with-response.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:25
&gt;&gt; +                    errorType: InspectorBackend.Enum.Network.ResourceErrorType.General,
&gt; 
&gt; Can we test that this error is actually used?  AFAICT, the only way to confirm that this test is actually working is the fact that there is only one ALERT, which is not very immediately identifiable.  We should be able to check that the `override.js` resource actually errored and that the error matches what we want.

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:28
&gt;&gt; +            WI.networkManager.addEventListener(WI.NetworkManager.Event.RequestIntercepted, interceptWithRequest);
&gt; 
&gt; Ditto (intercept-request-main-resource-with-response.html:33)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-response.html:15
&gt;&gt; +            let target = WI.assumingMainTarget();
&gt; 
&gt; Ditto (intercept-aborted-request.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-response.html:22
&gt;&gt; +            let interceptWithRequest = (event) =&gt; {
&gt; 
&gt; Ditto (intercept-request-main-resource-with-response.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-response.html:34
&gt;&gt; +            WI.networkManager.addEventListener(WI.NetworkManager.Event.RequestIntercepted, interceptWithRequest);
&gt; 
&gt; Ditto (intercept-request-main-resource-with-response.html:33)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource.html:15
&gt;&gt; +            let target = WI.assumingMainTarget();
&gt; 
&gt; Ditto (intercept-aborted-request.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource.html:20
&gt;&gt; +            let interceptWithRequest = (event) =&gt; {
&gt; 
&gt; Ditto (intercept-request-main-resource-with-response.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource.html:24
&gt;&gt; +                    requestId
&gt; 
&gt; Ditto (intercept-request-main-resource.html:25)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource.html:27
&gt;&gt; +            WI.networkManager.addEventListener(WI.NetworkManager.Event.RequestIntercepted, interceptWithRequest);
&gt; 
&gt; Ditto (intercept-request-main-resource-with-response.html:33)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:21
&gt;&gt; +            headers: [...response.headers]
&gt; 
&gt; `Array.from`?
&gt; Ditto (intercept-request-main-resource.html:25)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:30
&gt;&gt; +    InspectorTest.debug();
&gt; 
&gt; oops

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:32
&gt;&gt; +    let target = WI.assumingMainTarget();
&gt; 
&gt; Ditto (intercept-aborted-request.html:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:37
&gt;&gt; +            await target.NetworkAgent.addInterception.invoke({
&gt; 
&gt; Ditto (intercept-aborted-request.html:26)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:50
&gt;&gt; +        let keys = [...response.headers.keys()];
&gt; 
&gt; Ditto (:21)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:64
&gt;&gt; +            async test() {
&gt; 
&gt; Ditto (intercept-aborted-request.html:36)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:148
&gt;&gt; +        expression: `triggerOverrideLoad(&quot;#frag&quot;)`,
&gt; 
&gt; Ditto (intercept-request-properties.html:150)

Adding intercept-request-fragment.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662323</commentid>
    <comment_count>41</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-12 21:09:41 -0700</bug_when>
    <thetext>Added new intercept-request-fragment.html to cover fragments and re-implemented intercept-request-subresource-with-error.html to examine failure descriptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662534</commentid>
    <comment_count>42</comment_count>
      <attachid>401876</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-14 17:16:58 -0700</bug_when>
    <thetext>Created attachment 401876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662538</commentid>
    <comment_count>43</comment_count>
      <attachid>401878</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-14 18:59:39 -0700</bug_when>
    <thetext>Created attachment 401878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662794</commentid>
    <comment_count>44</comment_count>
      <attachid>401878</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-15 13:30:56 -0700</bug_when>
    <thetext>Comment on attachment 401878
Patch

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

r=me, nice work!  thanks for iterating and adding the tests :)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1126
&gt; +        return;
&gt; +    }

Style: please add a newline after control flow with a `return`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1179
&gt; +        return;
&gt; +    }

Style: please add a newline after control flow with a `return`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1180
&gt; +    auto&amp; loader = *pendingRequest-&gt;m_loader.get();

NIT: the `.get()` is unnecessary

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1200
&gt; +            return;
&gt; +        }

Style: please add a newline after control flow with a `return`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1203
&gt; +    // FIXME: figure out how to identify when a request has been overridden when we add this to the frontend.

thanks!

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1259
&gt; +    RefPtr&lt;ResourceLoader&gt; loader = pendingRequest-&gt;m_loader.get();

(In reply to Pavel Feldman from comment #40)
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=401648&amp;action=review
&gt; 
&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1259
&gt;&gt;&gt; +    RefPtr&lt;ResourceLoader&gt; loader = pendingRequest-&gt;m_loader.get();
&gt;&gt; 
&gt;&gt; Ditto (:1177)
&gt; 
&gt; Can&apos;t do it here - I&apos;m retaining this refprt.

Ah I see.  Well then since you&apos;re explicitly retaining this, I&apos;d suggest adding a comment as such so it&apos;s clear if someone comes along later and is unfamiliar with this code :)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1260
&gt; +    if (!loader-&gt;identifier()) {

Should this be `reachedTerminalState()`?

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1271
&gt; +            return;
&gt; +        }

Style: please add a newline after control flow with a `return`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1304
&gt; +    auto&amp; loader = *pendingRequest-&gt;m_loader.get();

Ditto (:1180)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1332
&gt; +    default:
&gt; +        error = ResourceError(errorDomainWebKitInternal, 0, loader.url(), &quot;Request intercepted&quot;_s, ResourceError::Type::General);
&gt; +        break;

(In reply to Pavel Feldman from comment #40)
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=401648&amp;action=review
&gt; 
&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1332
&gt;&gt;&gt; +        return;
&gt;&gt; 
&gt;&gt; NIT: is this actually necessary?  i would think not because the `switch` handles all of the `enum` values 🤔
&gt; 
&gt; It handles all, but I will remove the assertion and default to general.

I was more asking whether a `default` is needed at all.  `Inspector::Protocol::Network::ResourceErrorType` should be an `enum class` and you&apos;ve added a `case` for each value so I don&apos;t think we even need a `default` at all.  Am I missing something?

&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:37
&gt; +            let response = await RuntimeAgent.evaluate(&quot;fetchData(&apos;resources/script.js&apos;)&quot;);
&gt; +            response = await RuntimeAgent.awaitPromise(response.result.objectId, true);

NIT: we don&apos;t normally reassign to the same variable as it makes it harder to introspect values at the end, but I get what you&apos;re going here (and the tests pass :P ) so perhaps it&apos;s fine :)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:75
&gt; +                    requestId: &apos;wrongId&apos;,

Style: please use double quotes

&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:19
&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Network.interceptWithRequest&quot;);
&gt; +    NetworkAgent.addInterception.invoke({

Style: I&apos;d add a newline between since these lines are unrelated

&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:24
&gt; +    function addBaselineTestCase({name, description, expression, setup, teardown}) {

NIT: none of the callers actually use `setup` or `teardown`, so can we remove them?

&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:26
&gt; +            name, description, setup, teardown,

Style: for multi-line objects, we don&apos;t do partial inlining, so please put these on separate lines (for readability too)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:32
&gt; +                    RuntimeAgent.evaluate(expression),

NIT: we normally use `InspectorTest.evaluateInPage` for things like this as it also handles if `wasThrown` is `true` (which would NOT reject `Runtime.evaluate`), but they both do similar things so this is fine if you&apos;d prefer it

&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:34
&gt; +                InspectorTest.log(&apos;Request URL: &apos; + requestEvent.data.resource.url);

Style: please use double quotes

&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:35
&gt; +                InspectorTest.log(&apos;Response URL: &apos; + responseEvent.target.url);

Style: please use double quotes

&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:39
&gt; +    function addTestCase({name, description, expression, setup, teardown, url}) {

NIT: none of the callers actually use `setup` or `teardown`, so can we remove them?

&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:41
&gt; +            name, description, setup, teardown,

Style: for multi-line objects, we don&apos;t do partial inlining, so please put these on separate lines (for readability too)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:49
&gt; +                InspectorTest.log(&apos;Request URL: &apos; + requestEvent.data.resource.url);

Style: please use double quotes

&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:58
&gt; +                InspectorTest.log(&apos;Response URL: &apos; + responseEvent.target.url);

Style: please use double quotes

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:12
&gt; +        let data = eval(&apos;(&apos; + (await response.text() || &quot;{}&quot;) + &apos;)&apos;);

Style: please use double quotes

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:30
&gt; +    let data = eval(&apos;(&apos; + (await response.text() || &quot;{}&quot;) + &apos;)&apos;);

Style: please use double quotes

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:49
&gt; +            return;
&gt; +        }

Style: please add a newline after control flow with a `return`

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:84
&gt; +    function addTestCase({name, description, expression, setup, teardown, overrides}) {

NIT: none of the callers actually use `setup` or `teardown`, so can we remove them?

&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:86
&gt; +            name, description, setup, teardown,

Style: for multi-line objects, we don&apos;t do partial inlining, so please put these on separate lines (for readability too)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:13
&gt; +    link.onerror = () =&gt; alert(&apos;Error loading stylesheet&apos;);

Does this actually add anything?  Logs like these don&apos;t really help IMO :(

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:25
&gt; +    function addTestCase({name, description, expression, setup, teardown, errorType}) {

NIT: none of the callers actually use `setup` or `teardown`, so can we remove them?

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:27
&gt; +            name, description, setup, teardown,

Style: for multi-line objects, we don&apos;t do partial inlining, so please put these on separate lines (for readability too)

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:29
&gt; +                WI.Resource.singleFireEventListener(WI.Resource.Event.LoadingDidFail, (event) =&gt; {

Given that this is expected to fire in order for the test to pass, I feel like we should include this in the `async` flow as otherwise timing flakiness _might_ cause problems.
```
    let [loadingDidFailEvent] = await Promise.all([
        WI.Resource.awaitEvent(WI.Resource.Event.LoadingDidFail),
        NetworkAgent.interceptRequestWithError.invoke({
            requestId: requestInterceptedEvent.data.requestId,
            errorType,
        }),
    ]);

    InspectorTest.log(&quot;FAILURE TEXT: &quot; + loadingDidFailEvent.target.failureReasonText);
```

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:30
&gt; +                    InspectorTest.log(&apos;FAILURE TEXT: &apos; + event.target.failureReasonText);

Style: please use double quotes

&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:35
&gt; +                    RuntimeAgent.evaluate(&apos;loadSubresource()&apos;),

Style: please use double quotes

&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:54
&gt; +    function addTestCase({name, description, setup, teardown, expression, responseData}) {

NIT: none of the callers actually use `setup` or `teardown`, so can we remove them?

&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:56
&gt; +            name, description, setup, teardown,

Style: for multi-line objects, we don&apos;t do partial inlining, so please put these on separate lines (for readability too)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662807</commentid>
    <comment_count>45</comment_count>
      <attachid>401935</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-15 14:02:56 -0700</bug_when>
    <thetext>Created attachment 401935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662808</commentid>
    <comment_count>46</comment_count>
      <attachid>401878</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-15 14:03:21 -0700</bug_when>
    <thetext>Comment on attachment 401878
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1179
&gt;&gt; +    }
&gt; 
&gt; Style: please add a newline after control flow with a `return`

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1180
&gt;&gt; +    auto&amp; loader = *pendingRequest-&gt;m_loader.get();
&gt; 
&gt; NIT: the `.get()` is unnecessary

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1200
&gt;&gt; +        }
&gt; 
&gt; Style: please add a newline after control flow with a `return`

Done.

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1259
&gt;&gt;&gt; +    RefPtr&lt;ResourceLoader&gt; loader = pendingRequest-&gt;m_loader.get();
&gt;&gt; 
&gt;&gt; (In reply to Pavel Feldman from comment #40)
&gt; 
&gt; Ah I see.  Well then since you&apos;re explicitly retaining this, I&apos;d suggest adding a comment as such so it&apos;s clear if someone comes along later and is unfamiliar with this code :)

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1260
&gt;&gt; +    if (!loader-&gt;identifier()) {
&gt; 
&gt; Should this be `reachedTerminalState()`?

Done. Hm, I thought it was all.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1271
&gt;&gt; +        }
&gt; 
&gt; Style: please add a newline after control flow with a `return`

Done.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1304
&gt;&gt; +    auto&amp; loader = *pendingRequest-&gt;m_loader.get();
&gt; 
&gt; Ditto (:1180)

Done.

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1332
&gt;&gt;&gt; +        break;
&gt;&gt; 
&gt;&gt; (In reply to Pavel Feldman from comment #40)
&gt; 
&gt; I was more asking whether a `default` is needed at all.  `Inspector::Protocol::Network::ResourceErrorType` should be an `enum class` and you&apos;ve added a `case` for each value so I don&apos;t think we even need a `default` at all.  Am I missing something?

I didn&apos;t want someone who adds a new literal into the ResourceError to be blocked with this code. General should work just fine for them until inspector has a reason to differentiate the new outcome.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-continue.html:75
&gt;&gt; +                    requestId: &apos;wrongId&apos;,
&gt; 
&gt; Style: please use double quotes

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:19
&gt;&gt; +    NetworkAgent.addInterception.invoke({
&gt; 
&gt; Style: I&apos;d add a newline between since these lines are unrelated

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:24
&gt;&gt; +    function addBaselineTestCase({name, description, expression, setup, teardown}) {
&gt; 
&gt; NIT: none of the callers actually use `setup` or `teardown`, so can we remove them?

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:26
&gt;&gt; +            name, description, setup, teardown,
&gt; 
&gt; Style: for multi-line objects, we don&apos;t do partial inlining, so please put these on separate lines (for readability too)

Done. This was taken from local-resource-overrides!

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:32
&gt;&gt; +                    RuntimeAgent.evaluate(expression),
&gt; 
&gt; NIT: we normally use `InspectorTest.evaluateInPage` for things like this as it also handles if `wasThrown` is `true` (which would NOT reject `Runtime.evaluate`), but they both do similar things so this is fine if you&apos;d prefer it

Thanks!

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:34
&gt;&gt; +                InspectorTest.log(&apos;Request URL: &apos; + requestEvent.data.resource.url);
&gt; 
&gt; Style: please use double quotes

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:35
&gt;&gt; +                InspectorTest.log(&apos;Response URL: &apos; + responseEvent.target.url);
&gt; 
&gt; Style: please use double quotes

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:39
&gt;&gt; +    function addTestCase({name, description, expression, setup, teardown, url}) {
&gt; 
&gt; NIT: none of the callers actually use `setup` or `teardown`, so can we remove them?

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:41
&gt;&gt; +            name, description, setup, teardown,
&gt; 
&gt; Style: for multi-line objects, we don&apos;t do partial inlining, so please put these on separate lines (for readability too)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:49
&gt;&gt; +                InspectorTest.log(&apos;Request URL: &apos; + requestEvent.data.resource.url);
&gt; 
&gt; Style: please use double quotes

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-fragment.html:58
&gt;&gt; +                InspectorTest.log(&apos;Response URL: &apos; + responseEvent.target.url);
&gt; 
&gt; Style: please use double quotes

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:30
&gt;&gt; +    let data = eval(&apos;(&apos; + (await response.text() || &quot;{}&quot;) + &apos;)&apos;);
&gt; 
&gt; Style: please use double quotes

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:49
&gt;&gt; +        }
&gt; 
&gt; Style: please add a newline after control flow with a `return`

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:84
&gt;&gt; +    function addTestCase({name, description, expression, setup, teardown, overrides}) {
&gt; 
&gt; NIT: none of the callers actually use `setup` or `teardown`, so can we remove them?

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-properties.html:86
&gt;&gt; +            name, description, setup, teardown,
&gt; 
&gt; Style: for multi-line objects, we don&apos;t do partial inlining, so please put these on separate lines (for readability too)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:13
&gt;&gt; +    link.onerror = () =&gt; alert(&apos;Error loading stylesheet&apos;);
&gt; 
&gt; Does this actually add anything?  Logs like these don&apos;t really help IMO :(

We check that it fires on the user-land level. Does not hurt, could catch a real related bug though.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:25
&gt;&gt; +    function addTestCase({name, description, expression, setup, teardown, errorType}) {
&gt; 
&gt; NIT: none of the callers actually use `setup` or `teardown`, so can we remove them?

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:27
&gt;&gt; +            name, description, setup, teardown,
&gt; 
&gt; Style: for multi-line objects, we don&apos;t do partial inlining, so please put these on separate lines (for readability too)

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:29
&gt;&gt; +                WI.Resource.singleFireEventListener(WI.Resource.Event.LoadingDidFail, (event) =&gt; {
&gt; 
&gt; Given that this is expected to fire in order for the test to pass, I feel like we should include this in the `async` flow as otherwise timing flakiness _might_ cause problems.
&gt; ```
&gt;     let [loadingDidFailEvent] = await Promise.all([
&gt;         WI.Resource.awaitEvent(WI.Resource.Event.LoadingDidFail),
&gt;         NetworkAgent.interceptRequestWithError.invoke({
&gt;             requestId: requestInterceptedEvent.data.requestId,
&gt;             errorType,
&gt;         }),
&gt;     ]);
&gt; 
&gt;     InspectorTest.log(&quot;FAILURE TEXT: &quot; + loadingDidFailEvent.target.failureReasonText);
&gt; ```

Done

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:30
&gt;&gt; +                    InspectorTest.log(&apos;FAILURE TEXT: &apos; + event.target.failureReasonText);
&gt; 
&gt; Style: please use double quotes

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:35
&gt;&gt; +                    RuntimeAgent.evaluate(&apos;loadSubresource()&apos;),
&gt; 
&gt; Style: please use double quotes

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:54
&gt;&gt; +    function addTestCase({name, description, setup, teardown, expression, responseData}) {
&gt; 
&gt; NIT: none of the callers actually use `setup` or `teardown`, so can we remove them?

Done.

&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-with-response.html:56
&gt;&gt; +            name, description, setup, teardown,
&gt; 
&gt; Style: for multi-line objects, we don&apos;t do partial inlining, so please put these on separate lines (for readability too)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662813</commentid>
    <comment_count>47</comment_count>
      <attachid>401878</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-15 14:14:13 -0700</bug_when>
    <thetext>Comment on attachment 401878
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:1332
&gt;&gt;&gt;&gt; +        break;
&gt;&gt;&gt; 
&gt;&gt;&gt; (In reply to Pavel Feldman from comment #40)
&gt;&gt; 
&gt;&gt; I was more asking whether a `default` is needed at all.  `Inspector::Protocol::Network::ResourceErrorType` should be an `enum class` and you&apos;ve added a `case` for each value so I don&apos;t think we even need a `default` at all.  Am I missing something?
&gt; 
&gt; I didn&apos;t want someone who adds a new literal into the ResourceError to be blocked with this code. General should work just fine for them until inspector has a reason to differentiate the new outcome.

You&apos;re switching on `Inspector::Protocol::Network::ResourceErrorType` tho, so why would a change to `WebCore::ResourceError` matter?  If a developer is changing `Inspector::Protocol::Network::ResourceErrorType` I would _want_ them to be blocked on this code, as I&apos;d want them to add logic to handle their changes.

&gt;&gt;&gt; LayoutTests/http/tests/inspector/network/intercept-request-subresource-with-error.html:13
&gt;&gt;&gt; +    link.onerror = () =&gt; alert(&apos;Error loading stylesheet&apos;);
&gt;&gt; 
&gt;&gt; Does this actually add anything?  Logs like these don&apos;t really help IMO :(
&gt; 
&gt; We check that it fires on the user-land level. Does not hurt, could catch a real related bug though.

Can we include some other information then so we don&apos;t have four identical &quot;Error loading stylesheet&quot; logs?  I&apos;m just trying to make this more usable/actionable if this test becomes flakey in the future :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662829</commentid>
    <comment_count>48</comment_count>
      <attachid>401940</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-15 14:32:05 -0700</bug_when>
    <thetext>Created attachment 401940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662831</commentid>
    <comment_count>49</comment_count>
      <attachid>401941</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2020-06-15 14:33:42 -0700</bug_when>
    <thetext>Created attachment 401941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662934</commentid>
    <comment_count>50</comment_count>
      <attachid>401941</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-06-15 18:38:22 -0700</bug_when>
    <thetext>Comment on attachment 401941
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662936</commentid>
    <comment_count>51</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-15 18:46:17 -0700</bug_when>
    <thetext>Committed r263072: &lt;https://trac.webkit.org/changeset/263072&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401941.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662937</commentid>
    <comment_count>52</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-15 18:47:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/64388297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663123</commentid>
    <comment_count>53</comment_count>
    <who name="Jason Lawrence">Lawrence.j</who>
    <bug_when>2020-06-16 09:38:11 -0700</bug_when>
    <thetext>There are debug assert crashes associated with this commit which are tracked here: 
https://bugs.webkit.org/show_bug.cgi?id=213252</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392092</attachid>
            <date>2020-02-29 21:46:04 -0800</date>
            <delta_ts>2020-03-01 10:07:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200229214604.patch</filename>
            <type>text/plain</type>
            <size>52542</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzBmNThlZTJiOTllZTQwMDBlMDI3NDkwZWNhYTgzN2U3Mzg2MDE0Li5jOTE4ODk3ZDBlY2U2YjAz
NTNjMmQwZTI0M2MwYjQzZmVhMjc4NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3Qg
aW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrIHByb3RvY29sIGRvbWFpbi4KKyAgICAgICAgSXQg
YWRkcyBOZXR3b3JrLmludGVyY2VwdEFzRXJyb3IgdGhhdCBhYm9ydHMgdGhlIHJlcXVlc3QgYW5k
IHVwZGF0ZXMgZXhpc3RpbmcKKyAgICAgICAgTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSBhbmQg
aW50ZXJjZXB0V2l0aFJlc3BvbnNlIHRvIGFwcGx5IHRvIHJlcXVlc3RzIGFzIHdlbGwgYXMgcmVz
cG9uc2VzLgorICAgICAgICBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUgJ3JlcXVlc3Qn
IGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9O
ZXR3b3JrLmpzb246CisKIDIwMjAtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSlNDXSBCdWlsdGluTmFtZXMnIEhhc2hNYXAgc2hvdWxkIGJlIHNt
YWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMjQ5MmFlNzliOGZkMDU2NWZlYzg4MzFiY2YzZGEzYTNkOGM4ZDky
MC4uYjZjODRmM2ZjMWJlNWQ5Y2Y5MWM2Nzk5MTA1YThlMjg4ODhiOTUwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ0IEBACisyMDIwLTAyLTI5ICBQYXZlbCBGZWxkbWFuICA8cGF2ZWwuZmVsZG1h
bkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVlc3Qg
aW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc0NDYKKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVx
dWVzdCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgcHJvdG9jb2wgZG9tYWluLgorICAgICAg
ICBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0QXNFcnJvciB0aGF0IGFib3J0cyB0aGUgcmVxdWVz
dCBhbmQgdXBkYXRlcyBleGlzdGluZworICAgICAgICBOZXR3b3JrLmludGVyY2VwdENvbnRpbnVl
IGFuZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UgdG8gYXBwbHkgdG8gcmVxdWVzdHMgYXMgd2VsbCBh
cyByZXNwb25zZXMuCisgICAgICAgIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZSAncmVx
dWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVz
dEludGVybmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNob3VsZEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRDb250aW51ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Omlu
dGVyY2VwdEFzRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OkludGVyY2VwdDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnByZWxvYWQpOgorCiAyMDIwLTAyLTI5ICBaYWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bQkZDXSBDb25zb2xpZGF0ZSBwcmVjb21w
dXRlVmVydGljYWxQb3NpdGlvbkZvckFuY2VzdG9ycyBhbmQgcHJlY29tcHV0ZVZlcnRpY2FsUG9z
aXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDc3M2M0ZGY3N2M0MTM0Y2MxNDg3OTUw
Y2M1N2E1ZGY2N2U4NWJhYTUuLmU4NjkxZjMwYzJhMWJjYmFiODkzOWMzMzEyYzRiOTA5NTQwOTc4
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAyLTI5
ICBQYXZlbCBGZWxkbWFuICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBBIG5l
dyBwcm94eS1iYXNlZCBoYXJuZXNzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0L0lu
c3BlY3RvclByb3RvY29sLmpzOgorICAgICAgICAoZ2V0IHRhcmdldCk6CisKIDIwMjAtMDItMjgg
IE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjU3NDExKTogV2ViIEluc3BlY3RvcjogQ2FuJ3QgYWRkIGEgYnJlYWtwb2ludCBieSBw
cmVzc2luZyB0aGUgcGx1cyBidXR0b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzc0YzRjMjc3YTZiOTQ4OGUyYTUw
NGU2MzYzMTM2YmI1MzkxNjUxNy4uM2ViMmEyZDZmOGY0MjlkMzQ0YWU2MzZlYzQxOTBlZTY3Njk0
YmEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1h
biAgPHBhdmVsLmZlbGRtYW5AZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGlu
dHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9k
dWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrIHByb3RvY29s
IGRvbWFpbi4KKyAgICAgICAgSXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdEFzRXJyb3IgdGhhdCBh
Ym9ydHMgdGhlIHJlcXVlc3QgYW5kIHVwZGF0ZXMgZXhpc3RpbmcKKyAgICAgICAgTmV0d29yay5p
bnRlcmNlcHRDb250aW51ZSBhbmQgaW50ZXJjZXB0V2l0aFJlc3BvbnNlIHRvIGFwcGx5IHRvIHJl
cXVlc3RzIGFzIHdlbGwgYXMgcmVzcG9uc2VzLgorICAgICAgICBOZXR3b3JrU3RhZ2UgZW51bSBj
YW4gbm93IGhhdmUgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIwLTAyLTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIFBpY3R1cmUtaW4tUGljdHVy
ZSBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3By
b3RvY29sL05ldHdvcmsuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvTmV0d29yay5qc29uCmluZGV4IDc3N2E1NDE2NmVkNjY2NDU2MWIzZjgyNDlhNmFiYjRh
YzU5ZDA0ODAuLjY0NTczMTgyZWFmNTVlYzU5ZDgxMGFlODU1MTI4M2JjM2Q2YjZjZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29y
ay5qc29uCkBAIC0xNTUsNyArMTU1LDcgQEAKICAgICAgICAgICAgICJpZCI6ICJOZXR3b3JrU3Rh
Z2UiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29yayByZXF1ZXN0LiIsCi0gICAgICAg
ICAgICAiZW51bSI6IFsicmVzcG9uc2UiXQorICAgICAgICAgICAgImVudW0iOiBbInJlcXVlc3Qi
LCAicmVzcG9uc2UiXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC0y
MzgsNyArMjM4LDcgQEAKICAgICAgICAgICAgICJuYW1lIjogImFkZEludGVyY2VwdGlvbiIsCiAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWRkIGFuIGludGVyY2VwdGlvbi4iLAogICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAi
dHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlw
ZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVVJMIHBhdHRl
cm4gdG8gaW50ZXJjZXB0LCBpbnRlcmNlcHQgZXZlcnl0aGluZyBpZiBub3Qgc3BlY2lmaWVkIG9y
IGVtcHR5IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FzZVNlbnNpdGl2ZSIsICJ0
eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgZmFs
c2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJhbWV0ZXIuIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRl
ciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0aGlzIGFwcGxpZXMgdG8gYWxsIG5ldHdvcmsgc3Rh
Z2VzLiIgfQpAQCAtMjQ4LDcgKzI0OCw3IEBACiAgICAgICAgICAgICAibmFtZSI6ICJyZW1vdmVJ
bnRlcmNlcHRpb24iLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlbW92ZSBhbiBpbnRl
cmNlcHRpb24uIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIlVSTCBwYXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcg
aWYgbm90IHNwZWNpZmllZCBvciBlbXB0eSIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImNhc2VTZW5zaXRpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBjYXNpbmcgb2YgYHVybGAgcGFy
YW1ldGVyLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6
ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRy
ZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHByZXNlbnQgdGhpcyBhcHBsaWVz
IHRvIGFsbCBuZXR3b3JrIHN0YWdlcy4iIH0KQEAgLTI1Niw5ICsyNTYsMjAgQEAKICAgICAgICAg
fSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0Q29udGludWUiLAot
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIGFuIGludGVyY2VwdGlvbiB3aXRo
IG5vIG1vZGlmaWNhdGlvbnMuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb250aW51
ZSBhbiBpbnRlcmNlcHRpb24gd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMuIiwKICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVz
dElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9y
IHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUu
IiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1
ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5l
dHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51ZS4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVl
LCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9y
aWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEsIGJhc2U2NC1lbmNvZGVkLiIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJp
bnRlcmNlcHRBc0Vycm9yIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBYm9ydCB0aGUg
aW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIGdpdmVuIHJlYXNvbi4iLAorICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJl
ZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVy
Y2VwdGVkIE5ldHdvcmsgcmVxdWVzdC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZWFzb24iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRGVsaXZlciBlcnJvciBy
ZWFzb24gZm9yIHRoZSByZXF1ZXN0LiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAg
ICAgICB7CkBAIC0yNjYsOCArMjc3LDggQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQ
cm92aWRlIHJlc3BvbnNlIGNvbnRlbnQgZm9yIGFuIGludGVyY2VwdGVkIHJlc3BvbnNlLiIsCiAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJl
cXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVy
IGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXNwb25zZSB0byBtb2RpZnkuIiB9LAotICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBlIjogInN0cmluZyIgfSwKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2NEVuY29kZWQiLCAidHlwZSI6ICJib29sZWFu
IiwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNvbnRlbnQgd2FzIHNlbnQgYXMgYmFzZTY0LiIg
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJzdHJpbmci
LCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJiYXNlNjRF
bmNvZGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJUcnVlLCBpZiBjb250ZW50IHdhcyBzZW50IGFzIGJhc2U2NC4iIH0sCiAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJtaW1lVHlwZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJNSU1FIFR5cGUgZm9yIHRoZSBkYXRhLiIgfSwKICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1cyIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZS4gUGFz
cyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInN0YXR1c1RleHQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgdGV4dC4gUGFzcyB0
aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKQEAgLTM0OCw5ICszNTks
MTcgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc291cmNlIiwgIiRyZWYiOiAiQ2Fj
aGVkUmVzb3VyY2UiLCAiZGVzY3JpcHRpb24iOiAiQ2FjaGVkIHJlc291cmNlIGRhdGEuIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjog
InJlcXVlc3RJbnRlcmNlcHRlZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQg
d2hlbiBIVFRQIHJlcXVlc3QgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0
IHJlc3BvbmQgd2l0aCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdEFzRXJyb3I8L2NvZGU+LCA8Y29k
ZT5OZXR3b3JrLmludGVyY2VwdENvbnRpbnVlPC9jb2RlPiBvciA8Y29kZT5OZXR3b3JrLmludGVy
Y2VwdFdpdGhSZXNwb25zZTwvY29kZT5gIHRvIHJlc29sdmUgdGhpcyByZXF1ZXN0LiIsCisgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVl
c3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZv
ciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8
Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZXF1ZXN0IiwgIiRyZWYiOiAiUmVxdWVzdCIsICJkZXNjcmlwdGlvbiI6
ICJPcmlnaW5hbCByZXF1ZXN0IGNvbnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMg
Y29udGludWVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7CiAgICAg
ICAgICAgICAibmFtZSI6ICJyZXNwb25zZUludGVyY2VwdGVkIiwKLSAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQu
IFRoZSBmcm9udGVuZCBtdXN0IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRD
b250aW51ZTwvY29kZT4gb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uczwvY29k
ZT5gIHRvIGNvbnRpbnVlIHRoaXMgcmVzcG9uc2UuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJGaXJlZCB3aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBm
cm9udGVuZCBtdXN0IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51
ZTwvY29kZT4gb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0
byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdv
cmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxs
QmVTZW50PC9jb2RlPi4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXNwb25zZSIs
ICIkcmVmIjogIlJlc3BvbnNlIiwgImRlc2NyaXB0aW9uIjogIk9yaWdpbmFsIHJlc3BvbnNlIGNv
bnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMgY29udGludWVkLiIgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cAppbmRleCAzZGM3YjQ5NGQ2NjU2YTkxYzdkZDljNjhlMWM5ZWFmNzg5NjY2ZDAxLi4yMmMxMjNh
MjAyN2VkY2NiMjZkMWZiODFhNTg0MjI3ODcwODU4NmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODAzLDEw
ICs4MDMsMTAgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2Fj
aGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJiBjYWMKICAgICB9CiB9CiAKLWJvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKLSAgICAgICAgcmV0dXJuIG5l
dHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CisgICAgICAgIHJldHVy
biBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC0xMjg4LDYgKzEyODgsMTMgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnJlbmRlckxheWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnMKICAg
ICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRlckxheWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsK
IH0KIAorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVy
JiBsb2FkZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVkKT4mJiBoYW5kbGVyKQoreworICAg
IGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgICAgIHJldHVybiBuZXR3b3JrQWdl
bnQtPmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIEluc3RydW1lbnRpbmdBZ2VudHMmIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIHsKICAgICByZXR1cm4gd29ya2VyR2xvYmFsU2Nv
cGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRl
eCBiMjQ2ZWFhNTU5YTc1MjY1Yzg5MGRmYTQ3ZDAxZDMxMWMxODZhNDAzLi43MmI1ZmUyZmRiZjdl
ODk2Mzc3NTBkODg2ZWViN2M0NjdiNzBlNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBACiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KQEAgLTIzMSw3ICsy
MzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFu
Z2UoUGFnZSYsIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBib29s
IHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CisgICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBGcmFtZSosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lk
IGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIApAQCAtMzE3LDYg
KzMxOCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2UoUGFn
ZSopOwogICAgIHN0YXRpYyB2b2lkIHJlbmRlckxheWVyRGVzdHJveWVkKFBhZ2UqLCBjb25zdCBS
ZW5kZXJMYXllciYpOwogCisgICAgc3RhdGljIGJvb2wgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJj
ZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVkKT4mJik7CisKICAgICBzdGF0aWMg
dm9pZCBmcm9udGVuZENyZWF0ZWQoKTsKICAgICBzdGF0aWMgdm9pZCBmcm9udGVuZERlbGV0ZWQo
KTsKICAgICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZHMoKSB7IHJldHVybiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25QdWJsaWM6Omhhc0Zyb250ZW5kcygpOyB9CkBAIC00MzUsNyArNDM4LDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpOwogICAgIHN0YXRp
YyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJik7CiAK
LSAgICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHdpbGxJbnRl
cmNlcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKQEAg
LTUxNyw2ICs1MjAsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGxheWVyVHJlZURpZENo
YW5nZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogICAgIHN0YXRpYyB2b2lkIHJlbmRlckxh
eWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVuZGVyTGF5ZXIm
KTsKIAorICAgIHN0YXRpYyBib29sIGludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVkKT4mJik7
CisKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50c0Zv
clBhZ2UoUGFnZSYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKIApAQCAt
MTIzOSwxMSArMTI0NCwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmCiAgICAgd2lsbERlc3Ry
b3lDYWNoZWRSZXNvdXJjZUltcGwoY2FjaGVkUmVzb3VyY2UpOwogfQogCi1pbmxpbmUgYm9vbCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1l
KiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIGJvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyhmYWxzZSk7CiAgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm4gd2lsbElu
dGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKKyAgICAg
ICAgcmV0dXJuIHdpbGxJbnRlcmNlcHRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE2NzcsNiArMTY4MiwxNCBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKFBhZ2Uq
IHBhZ2UsIGNvbnN0IFJlbgogICAgICAgICByZW5kZXJMYXllckRlc3Ryb3llZEltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIHJlbmRlckxheWVyKTsKIH0KIAoraW5saW5lIGJvb2wgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIs
IEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVkKT4mJiBoYW5kbGVyKQoreworICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUobG9hZGVy
LmZyYW1lKCkpKQorICAgICAgICByZXR1cm4gaW50ZXJjZXB0UmVxdWVzdEltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBpbmxpbmUgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogewogICAgIHJldHVybiBjb250ZXh0ID8gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckNvbnRleHQoKmNvbnRleHQpIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXgg
OTU0YWFmMTIxYTlmYTUwN2Q4M2JjMTBhZTM3ZGUxZjEyOGY3ZGNmYy4uOWYxNmJlM2RiY2Y0ODU3
NzQyZWMyYWIxMzFlMmIyZjk2MmEyYTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMw
LDYgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBGdW5jdGlvbjx2b2lkKGJvb2wgaGFuZGxlZCk+JiYgaGFuZGxlcikKK3sKKyAg
ICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRl
ciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3Bv
bnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBiNjdlODliODBiNGU3YTg1ODZjYWM4MWFkZTVk
NThhMWJjYjBkNDMxLi43ZDMxYjM0NmExNTc3NjI4MmI3OWUxMmZiMWEwOWZhZjMzN2NkMGQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwxNCArMzYsMjIgQEAgY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQg
ewogcHVibGljOgorICAgIHN0YXRpYyBib29sIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImLCBGdW5jdGlvbjx2b2lkKGJvb2wgaGFuZGxlZCk+JiYpOwogICAgIHN0YXRpYyBib29sIHNo
b3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBpbnRlcmNlcHRSZXF1ZXN0SW50
ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGJvb2wgaGFuZGxlZCk+JiYpOwog
ICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJh
bWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0
UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCitpbmxpbmUg
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgRnVuY3Rpb248dm9pZChib29sIGhhbmRsZWQpPiYmIGhhbmRs
ZXIpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKKyAgICByZXR1
cm4gaW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9
CisKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCmluZGV4IGVlOWVkYjMwZGQ3YjM0NjFjNGQ0OTFkZmFmNzkyOTAxMWQ0
OThiYzkuLjRhNTI0ZTlhZmRhMjZhN2ViYmU2Y2JlOWQyNGQ4NjVjNGRlZGM5MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgpAQCAtODQxLDEy
ICs4NDIsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJp
bmcmKQogICAgIG1fcmVzb3VyY2VzRGF0YS0+Y2xlYXIoKTsKICAgICBtX2V4dHJhUmVxdWVzdEhl
YWRlcnMuY2xlYXIoKTsKIAorICAgIGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgY29u
dGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAKICAgICBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZChmYWxzZSk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNl
cHQoVVJMIHVybCkKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQo
VVJMIHVybCwgTmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSkKIHsKICAgICB1cmwucmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTg1NSw2ICs4NTcsMTAgQEAgYm9vbCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBmb3IgKGF1dG8mIGludGVyY2VwdCA6IG1faW50ZXJjZXB0cykgeworICAgICAg
ICBpZiAoaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSAhPSBuZXR3b3JrU3RhZ2UpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgaWYgKGludGVyY2VwdC51cmwuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9IGludGVy
Y2VwdC5pc1JlZ2V4ID8gQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6
UmVnZXggOiBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpFeGFjdFN0
cmluZzsKICAgICAgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0
ZVJlZ3VsYXJFeHByZXNzaW9uRm9yU2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGludGVyY2Vw
dC5jYXNlU2Vuc2l0aXZlLCBzZWFyY2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJlZ2V4Lm1h
dGNoKHVybFN0cmluZykgIT0gLTEpCkBAIC04NjQsNiArODcwLDE2IEBAIGJvb2wgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0
cygpCit7CisgICAgZm9yIChhdXRvJiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0ludGVyY2Vw
dFJlcXVlc3RzLnZhbHVlcygpKSB7CisgICAgICAgIFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBw
ZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgICAgIGlmIChsb2FkZXItPmlkZW50
aWZpZXIoKSkKKyAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5tX2NhbGxiYWNrKGZhbHNlKTsK
KyAgICB9CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwogdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7CiAg
ICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI5LDYyICsxMDQ1LDYwIEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCi0g
ICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVu
YWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAgY29u
dGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vu
c2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9u
YWxOZXR3b3JrU3RhZ2VTdHJpbmcpCiB7Ci0gICAgaWYgKG5ldHdvcmtTdGFnZVN0cmluZykgewot
ICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3Rv
ckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICBpZiAo
IW5ldHdvcmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJV
bmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQogICAgIEludGVyY2VwdCBpbnRlcmNlcHQ7
Ci0gICAgaW50ZXJjZXB0LnVybCA9IHVybDsKKyAgICBpbnRlcmNlcHQudXJsID0gdXJsID8gKnVy
bCA6IFN0cmluZygpOwogICAgIGlmIChvcHRpb25hbENhc2VTZW5zaXRpdmUpCiAgICAgICAgIGlu
dGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAo
b3B0aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElz
UmVnZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisg
ICAgaWYgKG9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKSB7CisgICAgICAgIGF1dG8gbmV0d29y
a1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFn
ZT4oKm9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgaWYgKCFuZXR3b3JrU3Rh
Z2UpIHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3
b3JrU3RhZ2U6ICJfcywgKm9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnRlcmNlcHQubmV0d29ya1N0YWdlID0gKm5l
dHdvcmtTdGFnZTsKKyAgICB9CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5hcHBlbmRJZk5vdENv
bnRhaW5zKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVyY2VwdCBmb3Ig
Z2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVhZHkgZXhpc3RzIl9zOwogfQogCi12b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdv
cmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1vdmVJbnRlcmNl
cHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgs
IGNvbnN0IFN0cmluZyogb3B0aW9uYWxOZXR3b3JrU3RhZ2VTdHJpbmcpCiB7Ci0gICAgaWYgKG5l
dHdvcmtTdGFnZVN0cmluZykgewotICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VT
dHJpbmcpOwotICAgICAgICBpZiAoIW5ldHdvcmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JT
dHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0
YWdlU3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQogICAg
IEludGVyY2VwdCBpbnRlcmNlcHQ7Ci0gICAgaW50ZXJjZXB0LnVybCA9IHVybDsKKyAgICBpbnRl
cmNlcHQudXJsID0gdXJsID8gKnVybCA6IFN0cmluZygpOwogICAgIGlmIChvcHRpb25hbENhc2VT
ZW5zaXRpdmUpCiAgICAgICAgIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2Fz
ZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQu
aXNSZWdleCA9ICpvcHRpb25hbElzUmVnZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRl
cmNlcHRpbmcgcmVxdWVzdHMuCisgICAgaWYgKG9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKSB7
CisgICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVj
dG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsKKyAg
ICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFr
ZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm9wdGlvbmFsTmV0d29ya1N0YWdl
U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnRlcmNl
cHQubmV0d29ya1N0YWdlID0gKm5ldHdvcmtTdGFnZTsKKyAgICB9CiAKICAgICBpZiAoIW1faW50
ZXJjZXB0cy5yZW1vdmVBbGwoaW50ZXJjZXB0KSkKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBpbnRlcmNlcHQgZm9yIGdpdmVuIHVybCBhbmQgZ2l2ZW4gaXNSZWdleCJfczsKIH0KIAot
Ym9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxs
SW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1f
aW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpKTsKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJj
ZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCkgfHwgc2hvdWxkSW50ZXJj
ZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UpOwogfQogCiBib29sIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkyLDcgKzExMDYsMjAgQEAgYm9vbCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSk7
CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSwgTmV0d29ya1N0YWdl
OjpSZXNwb25zZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVk
KT4mJiBoYW5kbGVyKQoreworICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkIHx8ICFzaG91
bGRJbnRlcmNlcHQobG9hZGVyLnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGxvYWRlci5pZGVudGlmaWVyKCkpOworICAgIGF1dG8gcGVuZGluZ1JlcXVl
c3QgPSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0PigpOworICAgIHBlbmRpbmdS
ZXF1ZXN0LT5tX2xvYWRlciA9ICZsb2FkZXI7CisgICAgcGVuZGluZ1JlcXVlc3QtPm1fY2FsbGJh
Y2sgPSBXVEZNb3ZlKGhhbmRsZXIpOworICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNl
dChyZXF1ZXN0SWQsIFdURk1vdmUocGVuZGluZ1JlcXVlc3QpKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNv
dXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3QoKSkpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmIGhhbmRsZXIpCkBAIC0xMTEyLDE5ICsxMTM5LDExOSBAQCB2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlSW50ZXJjZXB0ZWQocmVx
dWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIG51bGxwdHIp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit2b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nKiBtZXRob2QsIGNv
bnN0IEpTT046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkKIHsKKyAg
ICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShy
ZXF1ZXN0SWQpOworICAgIGlmIChwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBSZXNvdXJjZUxv
YWRlciogbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAgICBp
ZiAoIWxvYWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICAvLyBEbyBub3QgdGhyb3cg
dXBvbiBjb250aW51ZSBvZiBjYW5jZWxlZCByZXF1ZXN0cy4KKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICAvLyBTYWZlIHRvIGNvbnN0IGNhc3QgYXQgdGhpcyBwb2ludCwg
d2UgYXJlIG9ubHkgYWRqdXN0aW5nIHRoZSBtZXRob2QgLyBoZWFkZXJzIC8gcG9zdC4KKyAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0gY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3Qq
PigmbG9hZGVyLT5yZXF1ZXN0KCkpOworICAgICAgICBpZiAobWV0aG9kKQorICAgICAgICAgICAg
cmVxdWVzdC0+c2V0SFRUUE1ldGhvZCgqbWV0aG9kKTsKKyAgICAgICAgaWYgKGhlYWRlcnMpIHsK
KyAgICAgICAgICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOworICAgICAgICAgICAg
Zm9yIChhdXRvJiBoZWFkZXIgOiAqaGVhZGVycykgeworICAgICAgICAgICAgICAgIFN0cmluZyBo
ZWFkZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAoaGVhZGVyLnZhbHVlLT5hc1N0cmluZyho
ZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0SGVhZGVycy5hZGQoaGVh
ZGVyLmtleSwgaGVhZGVyVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVxdWVz
dC0+c2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAgICAg
ICB9CisgICAgICAgIGlmIChwb3N0RGF0YSkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlcjsKKyAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKCpwb3N0RGF0YSwgYnVmZmVy
KSkgeworICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2
ZW4gcG9zdERhdGEiX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgUmVmPEZvcm1EYXRhPiBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZShidWZmZXIp
OworICAgICAgICAgICAgcmVxdWVzdC0+c2V0SFRUUEJvZHkoV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcGVuZGluZ1JlcXVlc3QtPm1fY2FsbGJhY2soZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBt
X3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwotICAgIGlmICghcGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
cGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICBp
ZiAocGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7CisgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJl
c3BvbnNlIGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRBc0Vycm9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcmVhc29uKQoreworICAgIGF1dG8gcGVu
ZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7
CisgICAgaWYgKHBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgICAgIGlmICghbG9hZGVy
LT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBh
Ym9ydCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9y
RG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGludGVyY2Vw
dGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgaWYgKHJlYXNv
biA9PSAiQWNjZXNzQ29udHJvbCIpCisgICAgICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwoKSwgIkFjY2VzcyBkZW5p
ZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpOworICAgICAgICBlbHNl
IGlmIChyZWFzb24gPT0gIkNhbmNlbGxhdGlvbiIpCisgICAgICAgICAgICBlcnJvciA9IFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwoKSwgIlJl
cXVlc3QgY2FuY2VsZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7Cisg
ICAgICAgIGVsc2UgaWYgKHJlYXNvbiA9PSAiVGltZW91dCIpCisgICAgICAgICAgICBlcnJvciA9
IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwo
KSwgIlJlcXVlc3QgdGltZWQgb3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsK
KyAgICAgICAgbG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKKyAgICAgICAgcGVuZGluZ1JlcXVlc3Qt
Pm1fY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwZW5kaW5n
SW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVu
IHJlcXVlc3RJZCJfczsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2Vw
dFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3Qg
U3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVz
VGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIGNvbnRlbnQsIGNvbnN0IGJvb2wq
IGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVz
LCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycykK
IHsKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMu
dGFrZShyZXF1ZXN0SWQpOworICAgIGlmIChwZW5kaW5nUmVxdWVzdCAmJiAoIXN0YXR1cyB8fCAh
c3RhdHVzVGV4dCB8fCAhbWltZVR5cGUgfHwgIWhlYWRlcnMpIHsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSAic3RhdHVzLCBzdGF0dXNUZXh0LCBtaW1lVHlwZSBhbmQgaGVhZGVycyBtdXN0IGJlIHNw
ZWNpZmllZCB3aGVuIGZ1bGZpbGxpbmcgaW50ZXJjZXB0ZWQgcmVxdWVzdCJfczsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAocGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgUmVmUHRy
PFJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7
CisgICAgICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4g
cHJvY2Vzc2VkIl9zOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIGlmIChiYXNlNjRFbmNvZGVkICYmICpi
YXNlNjRFbmNvZGVkICYmIGNvbnRlbnQpIHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CisgICAgICAgICAgICBpZiAoIWJhc2U2NERlY29kZSgqY29udGVudCwgYnVmZmVyKSkg
eworICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4g
Y29udGVudCJfczsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjb250ZW50KQorICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNvbnRlbnQtPnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQtPnV0ZjgoKS5sZW5ndGgo
KSk7CisKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwZW5kaW5nUmVxdWVzdC0+
bV9sb2FkZXItPnVybCgpLCAqbWltZVR5cGUsIGRhdGEtPnNpemUoKSwgU3RyaW5nKCkpOworICAg
ICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpJbnNwZWN0
b3JPdmVycmlkZSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKCpzdGF0dXMp
OworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgqc3RhdHVzVGV4dCk7CisgICAg
ICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOworICAgICAgICBmb3IgKGF1dG8mIGhl
YWRlciA6ICpoZWFkZXJzKSB7CisgICAgICAgICAgICBTdHJpbmcgaGVhZGVyVmFsdWU7CisgICAg
ICAgICAgICBpZiAoaGVhZGVyLnZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAg
ICAgICAgICAgZXhwbGljaXRIZWFkZXJzLmFkZChoZWFkZXIua2V5LCBoZWFkZXJWYWx1ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4
cGxpY2l0SGVhZGVycykpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCByZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICAgICAg
bG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGRhdGEgPSBkYXRh
LnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoZGF0YS0+c2l6
ZSgpKQorICAgICAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRh
dGEpLCBkYXRhLT5zaXplKCksIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgICAg
ICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgICAg
ICB9KTsKKyAgICAgICAgcGVuZGluZ1JlcXVlc3QtPm1fY2FsbGJhY2sodHJ1ZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSA9IG1f
cGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7CiAgICAgaWYgKCFwZW5k
aW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBw
ZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwpAQCAtMTE1
MiwxNiArMTI3OSwxNiBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0
aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29ucwogICAgIH0KIAogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YTsKLSAgICBpZiAoYmFzZTY0RW5jb2RlZCkg
eworICAgIGlmIChiYXNlNjRFbmNvZGVkICYmICpiYXNlNjRFbmNvZGVkICYmIGNvbnRlbnQpIHsK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICAgICAgaWYgKCFiYXNlNjREZWNv
ZGUoY29udGVudCwgYnVmZmVyKSkgeworICAgICAgICBpZiAoIWJhc2U2NERlY29kZSgqY29udGVu
dCwgYnVmZmVyKSkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRlY29k
ZSBnaXZlbiBjb250ZW50Il9zOwogICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
LT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOwotICAgIH0gZWxzZQotICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShjb250ZW50LnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQudXRmOCgpLmxlbmd0
aCgpKTsKKyAgICB9IGVsc2UgaWYgKGNvbnRlbnQpCisgICAgICAgIG92ZXJyaWRlRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQtPnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQtPnV0Zjgo
KS5sZW5ndGgoKSk7CiAKICAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmQob3Zl
cnJpZGVSZXNwb25zZSwgb3ZlcnJpZGVEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGIwMzhh
MTg3OWMwNDNhYTE3ZGFlOTc0MjU2OTNmMjliZTQyZTMyNTguLjdhZGYzMGRhNTIzN2NiNWNiMTEy
OGNjYTFlNTI3NWZkNTE4MjBhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtODgsMTAgKzg4LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIGdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZShFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJpbmcqIHNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZSkg
ZmluYWw7CiAgICAgdm9pZCByZXNvbHZlV2ViU29ja2V0KEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JikgZmluYWw7CiAgICAgdm9pZCBz
ZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSBmaW5hbDsK
LSAgICB2b2lkIGFkZEludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBT
dHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVJbnRlcmNl
cHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VT
dHJpbmcpIGZpbmFsOwotICAgIHZvaWQgaW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCkgZmluYWw7Ci0gICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVz
cG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNv
bnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9i
amVjdCogaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogaXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwor
ICAgIHZvaWQgcmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nKiB1
cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0
IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdENv
bnRpbnVlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyogbWV0aG9kLCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9z
dERhdGEpIGZpbmFsOworICAgIHZvaWQgaW50ZXJjZXB0QXNFcnJvcihFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgZmluYWw7CisgICAg
dm9pZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nKiBjb250ZW50LCBjb25zdCBib29sKiBiYXNlNjRFbmNvZGVk
LCBjb25zdCBTdHJpbmcqIG1pbWVUeXBlLCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5n
KiBzdGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMpIGZpbmFsOwogCiAgICAg
Ly8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHls
ZSgpOwpAQCAtMTE4LDkgKzExOSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWluRnJhbWVOYXZp
Z2F0ZWQoRG9jdW1lbnRMb2FkZXImKTsKICAgICB2b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwog
ICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKLSAgICBi
b29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIGJv
b2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNob3Vs
ZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGlu
dGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgYm9vbCBpbnRlcmNlcHRSZXF1ZXN0KFJl
c291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChib29sIGhhbmRsZWQpPiYmKTsKIAogICAgIHZv
aWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNo
UmVzdWx0Pj4mKTsKICAgICB2b2lkIHNlYXJjaEluUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRp
dmUsIGJvb2wgaXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jik7CkBAIC0xNDAsNyArMTQyLDkgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7
CiAKLSAgICBib29sIHNob3VsZEludGVyY2VwdChVUkwpOworICAgIHVzaW5nIE5ldHdvcmtTdGFn
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZTsKKyAgICBib29s
IHNob3VsZEludGVyY2VwdChVUkwsIE5ldHdvcmtTdGFnZSk7CisgICAgdm9pZCBjb250aW51ZVBl
bmRpbmdSZXF1ZXN0cygpOwogICAgIHZvaWQgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAK
ICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CkBAIC0xNTMsNiArMTU3LDE1IEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgdGltZXN0
YW1wKCk7CiAKKyAgICBjbGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCB7CisgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KTsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBQZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdCgpID0gZGVmYXVsdDsKKyAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBt
X2xvYWRlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhbmRsZWQpPiBt
X2NhbGxiYWNrOworICAgIH07CisKICAgICBjbGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2Ug
ewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2Up
OwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTIwNCwxNSArMjE3LDE4IEBA
IHByaXZhdGU6CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGJvb2wgY2FzZVNlbnNpdGl2
ZSB7IHRydWUgfTsKICAgICAgICAgYm9vbCBpc1JlZ2V4IHsgZmFsc2UgfTsKKyAgICAgICAgTmV0
d29ya1N0YWdlIG5ldHdvcmtTdGFnZSB7IE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UgfTsKIAogICAg
ICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVyY2VwdCYgb3RoZXIpIGNvbnN0
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1cmwgPT0gb3RoZXIudXJsCiAgICAgICAg
ICAgICAgICAgJiYgY2FzZVNlbnNpdGl2ZSA9PSBvdGhlci5jYXNlU2Vuc2l0aXZlCi0gICAgICAg
ICAgICAgICAgJiYgaXNSZWdleCA9PSBvdGhlci5pc1JlZ2V4OworICAgICAgICAgICAgICAgICYm
IGlzUmVnZXggPT0gb3RoZXIuaXNSZWdleAorICAgICAgICAgICAgICAgICYmIG5ldHdvcmtTdGFn
ZSA9PSBvdGhlci5uZXR3b3JrU3RhZ2U7CiAgICAgICAgIH0KICAgICB9OwogICAgIFZlY3RvcjxJ
bnRlcmNlcHQ+IG1faW50ZXJjZXB0czsKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVf
cHRyPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0Pj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHM7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVz
cG9uc2U+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXM7CiAKICAgICAvLyBGSVhNRTogSW5z
cGVjdG9yTmV0d29ya0FnZW50IHNob3VsZCBub3QgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxh
dGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDVhZGM3ZGUzMmIxNDk2MWM1YTEzOWEwNzI0NDI3NmU1N2NiMDU1
YmEuLmVlOTllNTZhZTM1MjA3NjEwZjI0MTg2ZDdiYTYyMDQzNTJiNWVhNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApA
QCAtODEzLDcgKzgxMyw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgaWYgKERvY3Vt
ZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCiAgICAgICAgIHJlcXVlc3QudXBncmFk
ZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKCpkb2N1bWVudCk7CiAKLSAgICBpZiAoSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdCgmZnJhbWUsIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJ
bnRlcmNlcHQoJmZyYW1lLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmVx
dWVzdC5zZXRDYWNoaW5nUG9saWN5KENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZyk7CiAK
ICAgICByZXF1ZXN0LnVwZGF0ZVJlZmVycmVyUG9saWN5KGRvY3VtZW50KCkgPyBkb2N1bWVudCgp
LT5yZWZlcnJlclBvbGljeSgpIDogUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdy
YWRlKTsKQEAgLTE0MDAsNyArMTQwMCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRl
Y3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKIFJl
c291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoZnJhbWUoKSwgcmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKSkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2Vw
dChmcmFtZSgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAw
LCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCAiSW5zcGVjdG9yIGludGVyY2VwdCJf
cyB9KTsKIAogICAgIGlmIChyZXF1ZXN0LmNoYXJzZXQoKS5pc0VtcHR5KCkgJiYgKHR5cGUgPT0g
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdCB8fCB0eXBlID09IENhY2hlZFJlc291cmNlOjpU
eXBlOjpDU1NTdHlsZVNoZWV0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Rlc3QvSW5zcGVjdG9yUHJvdG9jb2wuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UZXN0L0luc3BlY3RvclByb3RvY29sLmpzCmluZGV4IGZmNTc4
ODEwZmFlNTUyNTkxZDE4MmM1YmUyNjA5Yzc3MmRkMmVkZTMuLjc4MTQ3OWZkYjUzOWYwMzk5M2Fk
M2MxOWFjY2JlYWNhNjBkMzYzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Rlc3QvSW5zcGVjdG9yUHJvdG9jb2wuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9JbnNwZWN0b3JQcm90b2NvbC5qcwpAQCAtMjAx
LDMgKzIwMSwyMSBAQCBJbnNwZWN0b3JQcm90b2NvbC5kaXNwYXRjaE1lc3NhZ2VGcm9tQmFja2Vu
ZCA9IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpCiAgICAgICAgIH0KICAgICB9CiB9OworCitJbnNw
ZWN0b3JQcm90b2NvbC5wcm90b2NvbCA9IG5ldyBQcm94eSh7fSwgeworICAgIGdldDogKHRhcmdl
dCwgYWdlbnROYW1lLCByZWNlaXZlcikgPT4gbmV3IFByb3h5KHt9LCB7CisgICAgICAgIGdldDog
KHRhcmdldCwgbWV0aG9kTmFtZSwgcmVjZWl2ZXIpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGV2
ZW50UGF0dGVybiA9IC9eKG9uKGNlKT98b2ZmKShbQS1aXVtBLVphLXowLTldKikvOworICAgICAg
ICAgICAgdmFyIG1hdGNoID0gZXZlbnRQYXR0ZXJuLmV4ZWMobWV0aG9kTmFtZSk7CisgICAgICAg
ICAgICBpZiAoIW1hdGNoKQorICAgICAgICAgICAgICByZXR1cm4gYXJncyA9PiBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBJbnNwZWN0b3JQcm90b2NvbC5zZW5kQ29tbWFuZChgJHth
Z2VudE5hbWV9LiR7bWV0aG9kTmFtZX1gLCBhcmdzIHx8IHt9LCB7IHJlc29sdmUsIHJlamVjdCB9
KSk7CisgICAgICAgICAgICB2YXIgZXZlbnROYW1lID0gbWF0Y2hbM107CisgICAgICAgICAgICBl
dmVudE5hbWUgPSBldmVudE5hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBldmVudE5hbWUu
c2xpY2UoMSk7CisgICAgICAgICAgICBpZiAobWF0Y2hbMV0gPT09ICJvbmNlIikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gKCkgPT4gSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7IGV2ZW50
OiBgJHthZ2VudE5hbWV9LiR7ZXZlbnROYW1lfWAgfSk7CisgICAgICAgICAgICBpZiAobWF0Y2hb
MV0gPT09ICJvZmYiKQorICAgICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lciA9PiBJbnNwZWN0
b3JQcm90b2NvbC5yZW1vdmVFdmVudExpc3RlbmVyKGAke2FnZW50TmFtZX0uJHtldmVudE5hbWV9
YCwgbGlzdGVuZXIpOworICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyID0+IEluc3BlY3RvclBy
b3RvY29sLmFkZEV2ZW50TGlzdGVuZXIoYCR7YWdlbnROYW1lfS4ke2V2ZW50TmFtZX1gLCBsaXN0
ZW5lcik7CisgICAgICAgIH0KKyAgICB9KQorfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMzUzMjcwMjM1
ZmM2NDYzOTE4MTQyYmRhYWNmOWEwZjFhMmVlZDM1MC4uNWYzMDAxNzdiZGY2Yzk0YWYyODYwZTZi
MjI2ZTM1N2ZlMGE4ZWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtM
b2FkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5o
PgpAQCAtMjMwLDYgKzIzMSwxNSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxv
YWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAgaWYg
KCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyLCB0cmFja2lu
Z1BhcmFtZXRlcnMpKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhlIE5l
dHdvcmtQcm9jZXNzIik7CisKKyAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0
ZWRSZXNvdXJjZUxvYWRlciA9ICZyZXNvdXJjZUxvYWRlcjsKKyAgICAgICAgaWYgKCFyZXNvdXJj
ZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIKKyAg
ICAgICAgICAgICYmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVx
dWVzdChyZXNvdXJjZUxvYWRlciwgW3RoaXMsIHByb3RlY3RlZFJlc291cmNlTG9hZGVyLCB0cmFj
a2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qs
IHJlc291cmNlXShib29sIGhhbmRsZWQpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICgh
aGFuZGxlZCkKKyAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9j
ZXNzKCpwcm90ZWN0ZWRSZXNvdXJjZUxvYWRlciwgcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXItPnJl
cXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOworICAgICAgICAg
ICAgICAgIH0pKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgc2No
ZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRl
ci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNzFjYWZhMzA1YTAzZmQxNjNiZTRkOTRmMjcxMWIw
OTZjNmY1NTk5Li5iNmIyNDM1NmU5YzA2MmY1OTQ0NjRjMTZmZmEyZDQzZThhMDc2MTVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxk
bWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVz
dCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayBy
ZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayBwcm90b2NvbCBkb21haW4uCisgICAg
ICAgIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRBc0Vycm9yIHRoYXQgYWJvcnRzIHRoZSByZXF1
ZXN0IGFuZCB1cGRhdGVzIGV4aXN0aW5nCisgICAgICAgIE5ldHdvcmsuaW50ZXJjZXB0Q29udGlu
dWUgYW5kIGludGVyY2VwdFdpdGhSZXNwb25zZSB0byBhcHBseSB0byByZXF1ZXN0cyBhcyB3ZWxs
IGFzIHJlc3BvbnNlcy4KKyAgICAgICAgTmV0d29ya1N0YWdlIGVudW0gY2FuIG5vdyBoYXZlICdy
ZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJl
c3BvbnNlLmh0bWw6CisKIDIwMjAtMDItMjkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTEZDXVtGbG9hdHNdIEZsb2F0aW5nU3RhdGU6OnRvcCBzaG91bGQgcmV0
dXJuIHRvcG1vc3QgbG9naWNhbCB2ZXJ0aWNhbCBwb3NpdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5q
cwppbmRleCBhMDI2NDlkNTZiZGIzZDI4NWMxZjBkN2Y4MDBjZmU0MTA4OTIyNjQxLi44MzFhNjFm
Njc4NWU0NDg4YjEyZDdkZmRlZjFmZTY2ZDM3NTUxMjIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5q
cwpAQCAtODcsMTIgKzg3LDE0IEBAIFRlc3RQYWdlLnJ1blRlc3QgPSB3aW5kb3cucnVuVGVzdCA9
IGZ1bmN0aW9uKCkKICAgICBpZiAodHlwZW9mIHRlc3RGdW5jdGlvbiAhPT0gImZ1bmN0aW9uIikg
ewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHNlbmQgdGVzdCgpIGJlY2F1c2UgaXQgaXMgbm90
IGEgZnVuY3Rpb24uIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgbGV0IHVybCA9IHRlc3RSdW5uZXIuaW5zcGVjdG9yVGVz
dFN0dWJVUkw7CiAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBvYnRh
aW4gaW5zcGVjdG9yIHRlc3Qgc3R1YiBVUkwuIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuSW5pdGlh
bGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZChpbml0aWFsaXplcnMpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGVkMjUyYzA3OTMzYmI0ZWI0ODczMWZmYWE5YjlmMGJkMzY4OTBm
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0IHJlcXVlc3Qg
aW50ZXJjZXB0aW9uLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5zZXRJbnRl
cmNlcHRpb25FbmFibGVkCistLSBSdW5uaW5nIHRlc3QgY2FzZTogcmVxdWVzdEludGVyY2VwdGVk
LmludGVyY2VwdENvbnRpbnVlCitQQVNTOiBSZXNwb25zZSBkYXRhOiAneyJhbHBoYSI6ImJldGEi
LCJnYW1tYSI6MTIzNDV9JworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogcmVxdWVzdEludGVyY2Vw
dGVkLmludGVyY2VwdFdpdGhSZXNwb25zZQorUEFTUzogdGV4dDogaW50ZXJjZXB0ZWQgZGF0YQor
UEFTUzogc3RhdHVzOiAyMDAKK1BBU1M6IHN0YXR1c1RleHQ6IE9LCitQQVNTOiBtaW1lVHlwZTog
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCitQQVNTOiBteS1oZWFkZXI6IG15LXZhbHVlCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0QXNFcnJvcgor
UEFTUzogUmVxdWVzdCBlcnJvcjogJ1JlcXVlc3QgY2FuY2VsZWQnCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiB0ZWFyRG93bgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGM2ZmI0OGU4NzVkZGIxNWM5
MThhY2ZhMTE0Mzc5ZmZkOTNlY2JjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbApAQCAtMCwwICsxLDEyNiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2Nv
bC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGZldGNoRGF0
YSgpIHsKKyAgICB0cnkgeworICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCdy
ZXNvdXJjZXMvZGF0YS5qc29uJyk7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0ZXh0
OiBhd2FpdCByZXNwb25zZS50ZXh0KCksCisgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0
YXR1cywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsCisgICAg
ICAgICAgICBtaW1lVHlwZTogcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpLAor
ICAgICAgICAgICAgaGVhZGVyOiByZXNwb25zZS5oZWFkZXJzLmdldCgnbXktaGVhZGVyJykKKyAg
ICAgICAgfTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiBlLm1lc3NhZ2U7Cisg
ICAgfQorfQorCithc3luYyBmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBQcm90
b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5zZXRJbnRlcmNlcHRpb25FbmFibGVk
Iik7CisgICAgY29uc3QgcHJvdG9jb2wgPSBJbnNwZWN0b3JQcm90b2NvbC5wcm90b2NvbDsKKyAg
ICBjb25zdCB7IHJlc3VsdCB9ID0gYXdhaXQgcHJvdG9jb2wuUnVudGltZS5ldmFsdWF0ZSh7IGV4
cHJlc3Npb246ICJkb2N1bWVudC5VUkwiIH0pOworICAgIGNvbnN0IGJhc2VVUkwgPSByZXN1bHQu
dmFsdWUuc3Vic3RyaW5nKDAsIHJlc3VsdC52YWx1ZS5sYXN0SW5kZXhPZigiLyIpKTsKKyAgICBj
b25zdCB1cmwgPSBiYXNlVVJMICsgIi9yZXNvdXJjZXMvZGF0YS5qc29uIjsKKworICAgIGF3YWl0
IFByb21pc2UuYWxsKFtwcm90b2NvbC5SdW50aW1lLmVuYWJsZSgpLCBwcm90b2NvbC5OZXR3b3Jr
LmVuYWJsZSgpXSk7CisgICAgYXdhaXQgcHJvdG9jb2wuTmV0d29yay5zZXRJbnRlcmNlcHRpb25F
bmFibGVkKHsgZW5hYmxlZDogdHJ1ZSB9KTsKKyAgICBhd2FpdCBwcm90b2NvbC5OZXR3b3JrLmFk
ZEludGVyY2VwdGlvbih7IHVybCwgc3RhZ2U6ICJyZXF1ZXN0IiB9KTsKKworICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRD
b250aW51ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBjb250aW51ZSBpbnRlcmNlcHRl
ZCByZXF1ZXN0LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRj
aCBVUkwgYW5kIGludGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJlc3VsdFBy
b21pc2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgIHByb3RvY29sLlJ1bnRpbWUuZXZhbHVhdGUoeyBleHByZXNzaW9uOiAiZmV0Y2hEYXRh
KCkifSksCisgICAgICAgICAgICAgICAgcHJvdG9jb2wuTmV0d29yay5vbmNlUmVxdWVzdEludGVy
Y2VwdGVkKCkKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAvLyBMZXQgdGhlIGxvYWQg
Y29udGludWUuCisgICAgICAgICAgICBjb25zdCBbIGZldGNoUmVzdWx0IF0gPSBhd2FpdCBQcm9t
aXNlLmFsbChbCisgICAgICAgICAgICAgICAgcHJvdG9jb2wuUnVudGltZS5hd2FpdFByb21pc2Uo
eyBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQsIHJl
dHVybkJ5VmFsdWU6IHRydWUgfSksCisgICAgICAgICAgICAgICAgcHJvdG9jb2wuTmV0d29yay5p
bnRlcmNlcHRDb250aW51ZSh7IHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVx
dWVzdElkIH0pCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5wYXNz
KCJSZXNwb25zZSBkYXRhOiAnIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZS50ZXh0LnRyaW0o
KSArICInIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogInJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRXaXRoUmVzcG9uc2Ui
LAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZnVsZmlsbCBpbnRlcmNlcHRlZCByZXF1ZXN0
IHdpdGggcmVzcG9uc2UuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIC8v
IEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAgICAgICAgY29uc3QgW2ZldGNoUmVz
dWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgcHJvdG9jb2wuUnVudGltZS5ldmFsdWF0ZSh7IGV4cHJlc3Npb246ICJmZXRj
aERhdGEoKSJ9KSwKKyAgICAgICAgICAgICAgICBwcm90b2NvbC5OZXR3b3JrLm9uY2VSZXF1ZXN0
SW50ZXJjZXB0ZWQoKQorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIC8vIEZ1bGZpbGwg
dGhlIHJlcXVlc3Qgd2l0aCBkYXRhLgorICAgICAgICAgICAgY29uc3QgW2ZldGNoUmVzdWx0XSA9
IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBwcm90b2NvbC5SdW50aW1lLmF3
YWl0UHJvbWlzZSh7IHByb21pc2VPYmplY3RJZDogZmV0Y2hSZXN1bHRQcm9taXNlLnJlc3VsdC5v
YmplY3RJZCwgcmV0dXJuQnlWYWx1ZTogdHJ1ZSB9KSwKKyAgICAgICAgICAgICAgICBwcm90b2Nv
bC5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZSh7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAgICAgICAg
ICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9L
IiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAibXktaGVhZGVyIjogIm15LXZhbHVl
IiB9LAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZTogImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGJ0b2EoImludGVyY2VwdGVkIGRh
dGEiKSwKKyAgICAgICAgICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogdHJ1ZQorICAgICAgICAg
ICAgICAgIH0pCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIHByaW50RmV0Y2hSZXN1bHQo
ZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAicmVxdWVzdEludGVyY2VwdGVkLmludGVy
Y2VwdEFzRXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgYWJvcnQgaW50ZXJjZXB0
ZWQgcmVxdWVzdCB3aXRoIGVycm9yLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAg
ICAgICAvLyBGZXRjaCBVUkwgYW5kIGludGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGNvbnN0IFtm
ZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwo
WworICAgICAgICAgICAgICAgIHByb3RvY29sLlJ1bnRpbWUuZXZhbHVhdGUoeyBleHByZXNzaW9u
OiAiZmV0Y2hEYXRhKCkifSksCisgICAgICAgICAgICAgICAgcHJvdG9jb2wuTmV0d29yay5vbmNl
UmVxdWVzdEludGVyY2VwdGVkKCkKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAvLyBB
Ym9ydCB0aGUgcmVxdWVzdCBhcyBjYW5jZWxlZC4KKyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJl
c3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgcHJvdG9jb2wuUnVu
dGltZS5hd2FpdFByb21pc2UoeyBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5y
ZXN1bHQub2JqZWN0SWQsIHJldHVybkJ5VmFsdWU6IHRydWUgfSksCisgICAgICAgICAgICAgICAg
cHJvdG9jb2wuTmV0d29yay5pbnRlcmNlcHRBc0Vycm9yKHsKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdElkOiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAg
ICAgICAgICAgIHJlYXNvbjogIkNhbmNlbGxhdGlvbiIKKyAgICAgICAgICAgICAgICB9KQorICAg
ICAgICAgICAgXSk7CisgICAgICAgICAgICBQcm90b2NvbFRlc3QucGFzcygiUmVxdWVzdCBlcnJv
cjogJyIgKyBmZXRjaFJlc3VsdC5yZXN1bHQudmFsdWUgKyAiJyIpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJ0ZWFyRG93biIs
CisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCBwcm90b2NvbC5OZXR3
b3JrLnJlbW92ZUludGVyY2VwdGlvbih7IHVybCwgc3RhZ2U6ICJyZXF1ZXN0IiB9KTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CisKKyAg
ICBmdW5jdGlvbiBwcmludEZldGNoUmVzdWx0KHJlc3VsdCkKKyAgICB7CisgICAgICAgIFByb3Rv
Y29sVGVzdC5wYXNzKCJ0ZXh0OiAiICsgcmVzdWx0LnRleHQpOworICAgICAgICBQcm90b2NvbFRl
c3QucGFzcygic3RhdHVzOiAiICsgcmVzdWx0LnN0YXR1cyk7CisgICAgICAgIFByb3RvY29sVGVz
dC5wYXNzKCJzdGF0dXNUZXh0OiAiICsgcmVzdWx0LnN0YXR1c1RleHQpOworICAgICAgICBQcm90
b2NvbFRlc3QucGFzcygibWltZVR5cGU6ICIgKyByZXN1bHQubWltZVR5cGUpOworICAgICAgICBQ
cm90b2NvbFRlc3QucGFzcygibXktaGVhZGVyOiAiICsgcmVzdWx0LmhlYWRlcik7CisgICAgfQor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0
IHJlcXVlc3QgaW50ZXJjZXB0aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392099</attachid>
            <date>2020-03-01 10:07:49 -0800</date>
            <delta_ts>2020-05-12 22:51:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200301100748.patch</filename>
            <type>text/plain</type>
            <size>52543</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzBmNThlZTJiOTllZTQwMDBlMDI3NDkwZWNhYTgzN2U3Mzg2MDE0Li5jOTE4ODk3ZDBlY2U2YjAz
NTNjMmQwZTI0M2MwYjQzZmVhMjc4NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3Qg
aW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrIHByb3RvY29sIGRvbWFpbi4KKyAgICAgICAgSXQg
YWRkcyBOZXR3b3JrLmludGVyY2VwdEFzRXJyb3IgdGhhdCBhYm9ydHMgdGhlIHJlcXVlc3QgYW5k
IHVwZGF0ZXMgZXhpc3RpbmcKKyAgICAgICAgTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSBhbmQg
aW50ZXJjZXB0V2l0aFJlc3BvbnNlIHRvIGFwcGx5IHRvIHJlcXVlc3RzIGFzIHdlbGwgYXMgcmVz
cG9uc2VzLgorICAgICAgICBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUgJ3JlcXVlc3Qn
IGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9O
ZXR3b3JrLmpzb246CisKIDIwMjAtMDItMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSlNDXSBCdWlsdGluTmFtZXMnIEhhc2hNYXAgc2hvdWxkIGJlIHNt
YWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMjQ5MmFlNzliOGZkMDU2NWZlYzg4MzFiY2YzZGEzYTNkOGM4ZDky
MC4uYjZjODRmM2ZjMWJlNWQ5Y2Y5MWM2Nzk5MTA1YThlMjg4ODhiOTUwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ0IEBACisyMDIwLTAyLTI5ICBQYXZlbCBGZWxkbWFuICA8cGF2ZWwuZmVsZG1h
bkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVlc3Qg
aW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc0NDYKKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVx
dWVzdCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgcHJvdG9jb2wgZG9tYWluLgorICAgICAg
ICBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0QXNFcnJvciB0aGF0IGFib3J0cyB0aGUgcmVxdWVz
dCBhbmQgdXBkYXRlcyBleGlzdGluZworICAgICAgICBOZXR3b3JrLmludGVyY2VwdENvbnRpbnVl
IGFuZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UgdG8gYXBwbHkgdG8gcmVxdWVzdHMgYXMgd2VsbCBh
cyByZXNwb25zZXMuCisgICAgICAgIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZSAncmVx
dWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVz
dEludGVybmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNob3VsZEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRDb250aW51ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Omlu
dGVyY2VwdEFzRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OkludGVyY2VwdDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnByZWxvYWQpOgorCiAyMDIwLTAyLTI5ICBaYWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bQkZDXSBDb25zb2xpZGF0ZSBwcmVjb21w
dXRlVmVydGljYWxQb3NpdGlvbkZvckFuY2VzdG9ycyBhbmQgcHJlY29tcHV0ZVZlcnRpY2FsUG9z
aXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDc3M2M0ZGY3N2M0MTM0Y2MxNDg3OTUw
Y2M1N2E1ZGY2N2U4NWJhYTUuLmU4NjkxZjMwYzJhMWJjYmFiODkzOWMzMzEyYzRiOTA5NTQwOTc4
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAyLTI5
ICBQYXZlbCBGZWxkbWFuICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBBIG5l
dyBwcm94eS1iYXNlZCBoYXJuZXNzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0L0lu
c3BlY3RvclByb3RvY29sLmpzOgorICAgICAgICAoZ2V0IHRhcmdldCk6CisKIDIwMjAtMDItMjgg
IE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjU3NDExKTogV2ViIEluc3BlY3RvcjogQ2FuJ3QgYWRkIGEgYnJlYWtwb2ludCBieSBw
cmVzc2luZyB0aGUgcGx1cyBidXR0b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzc0YzRjMjc3YTZiOTQ4OGUyYTUw
NGU2MzYzMTM2YmI1MzkxNjUxNy4uM2ViMmEyZDZmOGY0MjlkMzQ0YWU2MzZlYzQxOTBlZTY3Njk0
YmEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1h
biAgPHBhdmVsLmZlbGRtYW5AZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGlu
dHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9k
dWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrIHByb3RvY29s
IGRvbWFpbi4KKyAgICAgICAgSXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdEFzRXJyb3IgdGhhdCBh
Ym9ydHMgdGhlIHJlcXVlc3QgYW5kIHVwZGF0ZXMgZXhpc3RpbmcKKyAgICAgICAgTmV0d29yay5p
bnRlcmNlcHRDb250aW51ZSBhbmQgaW50ZXJjZXB0V2l0aFJlc3BvbnNlIHRvIGFwcGx5IHRvIHJl
cXVlc3RzIGFzIHdlbGwgYXMgcmVzcG9uc2VzLgorICAgICAgICBOZXR3b3JrU3RhZ2UgZW51bSBj
YW4gbm93IGhhdmUgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIwLTAyLTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIFBpY3R1cmUtaW4tUGljdHVy
ZSBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3By
b3RvY29sL05ldHdvcmsuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvTmV0d29yay5qc29uCmluZGV4IDc3N2E1NDE2NmVkNjY2NDU2MWIzZjgyNDlhNmFiYjRh
YzU5ZDA0ODAuLjY0NTczMTgyZWFmNTVlYzU5ZDgxMGFlODU1MTI4M2JjM2Q2YjZjZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29y
ay5qc29uCkBAIC0xNTUsNyArMTU1LDcgQEAKICAgICAgICAgICAgICJpZCI6ICJOZXR3b3JrU3Rh
Z2UiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29yayByZXF1ZXN0LiIsCi0gICAgICAg
ICAgICAiZW51bSI6IFsicmVzcG9uc2UiXQorICAgICAgICAgICAgImVudW0iOiBbInJlcXVlc3Qi
LCAicmVzcG9uc2UiXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC0y
MzgsNyArMjM4LDcgQEAKICAgICAgICAgICAgICJuYW1lIjogImFkZEludGVyY2VwdGlvbiIsCiAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWRkIGFuIGludGVyY2VwdGlvbi4iLAogICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAi
dHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlw
ZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVVJMIHBhdHRl
cm4gdG8gaW50ZXJjZXB0LCBpbnRlcmNlcHQgZXZlcnl0aGluZyBpZiBub3Qgc3BlY2lmaWVkIG9y
IGVtcHR5IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FzZVNlbnNpdGl2ZSIsICJ0
eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgZmFs
c2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJhbWV0ZXIuIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRl
ciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0aGlzIGFwcGxpZXMgdG8gYWxsIG5ldHdvcmsgc3Rh
Z2VzLiIgfQpAQCAtMjQ4LDcgKzI0OCw3IEBACiAgICAgICAgICAgICAibmFtZSI6ICJyZW1vdmVJ
bnRlcmNlcHRpb24iLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlbW92ZSBhbiBpbnRl
cmNlcHRpb24uIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIlVSTCBwYXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcg
aWYgbm90IHNwZWNpZmllZCBvciBlbXB0eSIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImNhc2VTZW5zaXRpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBjYXNpbmcgb2YgYHVybGAgcGFy
YW1ldGVyLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6
ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRy
ZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHByZXNlbnQgdGhpcyBhcHBsaWVz
IHRvIGFsbCBuZXR3b3JrIHN0YWdlcy4iIH0KQEAgLTI1Niw5ICsyNTYsMjAgQEAKICAgICAgICAg
fSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0Q29udGludWUiLAot
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIGFuIGludGVyY2VwdGlvbiB3aXRo
IG5vIG1vZGlmaWNhdGlvbnMuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb250aW51
ZSBhbiBpbnRlcmNlcHRpb24gd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMuIiwKICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVz
dElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9y
IHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUu
IiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1
ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5l
dHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51ZS4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVl
LCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9y
aWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEsIGJhc2U2NC1lbmNvZGVkLiIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJp
bnRlcmNlcHRBc0Vycm9yIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBYm9ydCB0aGUg
aW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIGdpdmVuIHJlYXNvbi4iLAorICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJl
ZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVy
Y2VwdGVkIE5ldHdvcmsgcmVxdWVzdC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZWFzb24iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRGVsaXZlciBlcnJvciBy
ZWFzb24gZm9yIHRoZSByZXF1ZXN0LiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAg
ICAgICB7CkBAIC0yNjYsOCArMjc3LDggQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQ
cm92aWRlIHJlc3BvbnNlIGNvbnRlbnQgZm9yIGFuIGludGVyY2VwdGVkIHJlc3BvbnNlLiIsCiAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJl
cXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVy
IGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXNwb25zZSB0byBtb2RpZnkuIiB9LAotICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBlIjogInN0cmluZyIgfSwKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2NEVuY29kZWQiLCAidHlwZSI6ICJib29sZWFu
IiwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNvbnRlbnQgd2FzIHNlbnQgYXMgYmFzZTY0LiIg
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJzdHJpbmci
LCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJiYXNlNjRF
bmNvZGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJUcnVlLCBpZiBjb250ZW50IHdhcyBzZW50IGFzIGJhc2U2NC4iIH0sCiAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJtaW1lVHlwZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJNSU1FIFR5cGUgZm9yIHRoZSBkYXRhLiIgfSwKICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1cyIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZS4gUGFz
cyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInN0YXR1c1RleHQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgdGV4dC4gUGFzcyB0
aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKQEAgLTM0OCw5ICszNTks
MTcgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc291cmNlIiwgIiRyZWYiOiAiQ2Fj
aGVkUmVzb3VyY2UiLCAiZGVzY3JpcHRpb24iOiAiQ2FjaGVkIHJlc291cmNlIGRhdGEuIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjog
InJlcXVlc3RJbnRlcmNlcHRlZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQg
d2hlbiBIVFRQIHJlcXVlc3QgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0
IHJlc3BvbmQgd2l0aCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdEFzRXJyb3I8L2NvZGU+LCA8Y29k
ZT5OZXR3b3JrLmludGVyY2VwdENvbnRpbnVlPC9jb2RlPiBvciA8Y29kZT5OZXR3b3JrLmludGVy
Y2VwdFdpdGhSZXNwb25zZTwvY29kZT5gIHRvIHJlc29sdmUgdGhpcyByZXF1ZXN0LiIsCisgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVl
c3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZv
ciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8
Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZXF1ZXN0IiwgIiRyZWYiOiAiUmVxdWVzdCIsICJkZXNjcmlwdGlvbiI6
ICJPcmlnaW5hbCByZXF1ZXN0IGNvbnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMg
Y29udGludWVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7CiAgICAg
ICAgICAgICAibmFtZSI6ICJyZXNwb25zZUludGVyY2VwdGVkIiwKLSAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQu
IFRoZSBmcm9udGVuZCBtdXN0IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRD
b250aW51ZTwvY29kZT4gb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uczwvY29k
ZT5gIHRvIGNvbnRpbnVlIHRoaXMgcmVzcG9uc2UuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJGaXJlZCB3aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBm
cm9udGVuZCBtdXN0IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51
ZTwvY29kZT4gb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0
byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdv
cmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxs
QmVTZW50PC9jb2RlPi4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXNwb25zZSIs
ICIkcmVmIjogIlJlc3BvbnNlIiwgImRlc2NyaXB0aW9uIjogIk9yaWdpbmFsIHJlc3BvbnNlIGNv
bnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMgY29udGludWVkLiIgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cAppbmRleCAzZGM3YjQ5NGQ2NjU2YTkxYzdkZDljNjhlMWM5ZWFmNzg5NjY2ZDAxLi4yMmMxMjNh
MjAyN2VkY2NiMjZkMWZiODFhNTg0MjI3ODcwODU4NmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODAzLDEw
ICs4MDMsMTAgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2Fj
aGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJiBjYWMKICAgICB9CiB9CiAKLWJvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKLSAgICAgICAgcmV0dXJuIG5l
dHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CisgICAgICAgIHJldHVy
biBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC0xMjg4LDYgKzEyODgsMTMgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnJlbmRlckxheWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnMKICAg
ICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRlckxheWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsK
IH0KIAorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVy
JiBsb2FkZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVkKT4mJiBoYW5kbGVyKQoreworICAg
IGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgICAgIHJldHVybiBuZXR3b3JrQWdl
bnQtPmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIEluc3RydW1lbnRpbmdBZ2VudHMmIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIHsKICAgICByZXR1cm4gd29ya2VyR2xvYmFsU2Nv
cGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRl
eCBiMjQ2ZWFhNTU5YTc1MjY1Yzg5MGRmYTQ3ZDAxZDMxMWMxODZhNDAzLi43MmI1ZmUyZmRiZjdl
ODk2Mzc3NTBkODg2ZWViN2M0NjdiNzBlNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBACiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KQEAgLTIzMSw3ICsy
MzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFu
Z2UoUGFnZSYsIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBib29s
IHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CisgICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBGcmFtZSosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lk
IGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIApAQCAtMzE3LDYg
KzMxOCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2UoUGFn
ZSopOwogICAgIHN0YXRpYyB2b2lkIHJlbmRlckxheWVyRGVzdHJveWVkKFBhZ2UqLCBjb25zdCBS
ZW5kZXJMYXllciYpOwogCisgICAgc3RhdGljIGJvb2wgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJj
ZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVkKT4mJik7CisKICAgICBzdGF0aWMg
dm9pZCBmcm9udGVuZENyZWF0ZWQoKTsKICAgICBzdGF0aWMgdm9pZCBmcm9udGVuZERlbGV0ZWQo
KTsKICAgICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZHMoKSB7IHJldHVybiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25QdWJsaWM6Omhhc0Zyb250ZW5kcygpOyB9CkBAIC00MzUsNyArNDM4LDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpOwogICAgIHN0YXRp
YyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJik7CiAK
LSAgICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHdpbGxJbnRl
cmNlcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKQEAg
LTUxNyw2ICs1MjAsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGxheWVyVHJlZURpZENo
YW5nZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogICAgIHN0YXRpYyB2b2lkIHJlbmRlckxh
eWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVuZGVyTGF5ZXIm
KTsKIAorICAgIHN0YXRpYyBib29sIGludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVkKT4mJik7
CisKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50c0Zv
clBhZ2UoUGFnZSYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKIApAQCAt
MTIzOSwxMSArMTI0NCwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmCiAgICAgd2lsbERlc3Ry
b3lDYWNoZWRSZXNvdXJjZUltcGwoY2FjaGVkUmVzb3VyY2UpOwogfQogCi1pbmxpbmUgYm9vbCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1l
KiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIGJvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyhmYWxzZSk7CiAgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm4gd2lsbElu
dGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKKyAgICAg
ICAgcmV0dXJuIHdpbGxJbnRlcmNlcHRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE2NzcsNiArMTY4MiwxNCBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKFBhZ2Uq
IHBhZ2UsIGNvbnN0IFJlbgogICAgICAgICByZW5kZXJMYXllckRlc3Ryb3llZEltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIHJlbmRlckxheWVyKTsKIH0KIAoraW5saW5lIGJvb2wgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIs
IEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVkKT4mJiBoYW5kbGVyKQoreworICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUobG9hZGVy
LmZyYW1lKCkpKQorICAgICAgICByZXR1cm4gaW50ZXJjZXB0UmVxdWVzdEltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBpbmxpbmUgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogewogICAgIHJldHVybiBjb250ZXh0ID8gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckNvbnRleHQoKmNvbnRleHQpIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXgg
OTU0YWFmMTIxYTlmYTUwN2Q4M2JjMTBhZTM3ZGUxZjEyOGY3ZGNmYy4uOWYxNmJlM2RiY2Y0ODU3
NzQyZWMyYWIxMzFlMmIyZjk2MmEyYTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMw
LDYgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBGdW5jdGlvbjx2b2lkKGJvb2wgaGFuZGxlZCk+JiYgaGFuZGxlcikKK3sKKyAg
ICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRl
ciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3Bv
bnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBiNjdlODliODBiNGU3YTg1ODZjYWM4MWFkZTVk
NThhMWJjYjBkNDMxLi43ZDMxYjM0NmExNTc3NjI4MmI3OWUxMmZiMWEwOWZhZjMzN2NkMGQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwxNCArMzYsMjIgQEAgY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQg
ewogcHVibGljOgorICAgIHN0YXRpYyBib29sIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImLCBGdW5jdGlvbjx2b2lkKGJvb2wgaGFuZGxlZCk+JiYpOwogICAgIHN0YXRpYyBib29sIHNo
b3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBpbnRlcmNlcHRSZXF1ZXN0SW50
ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGJvb2wgaGFuZGxlZCk+JiYpOwog
ICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJh
bWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0
UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCitpbmxpbmUg
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgRnVuY3Rpb248dm9pZChib29sIGhhbmRsZWQpPiYmIGhhbmRs
ZXIpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKKyAgICByZXR1
cm4gaW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9
CisKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCmluZGV4IGVlOWVkYjMwZGQ3YjM0NjFjNGQ0OTFkZmFmNzkyOTAxMWQ0
OThiYzkuLmM5YWQzZTVhMTFhNzQzZWViYzM3MDc3OTc4YTg2YWY2MTBhMjk0OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgpAQCAtODQxLDEy
ICs4NDIsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJp
bmcmKQogICAgIG1fcmVzb3VyY2VzRGF0YS0+Y2xlYXIoKTsKICAgICBtX2V4dHJhUmVxdWVzdEhl
YWRlcnMuY2xlYXIoKTsKIAorICAgIGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgY29u
dGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAKICAgICBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZChmYWxzZSk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNl
cHQoVVJMIHVybCkKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQo
VVJMIHVybCwgTmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSkKIHsKICAgICB1cmwucmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTg1NSw2ICs4NTcsMTAgQEAgYm9vbCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBmb3IgKGF1dG8mIGludGVyY2VwdCA6IG1faW50ZXJjZXB0cykgeworICAgICAg
ICBpZiAoaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSAhPSBuZXR3b3JrU3RhZ2UpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgaWYgKGludGVyY2VwdC51cmwuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9IGludGVy
Y2VwdC5pc1JlZ2V4ID8gQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6
UmVnZXggOiBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpFeGFjdFN0
cmluZzsKICAgICAgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0
ZVJlZ3VsYXJFeHByZXNzaW9uRm9yU2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGludGVyY2Vw
dC5jYXNlU2Vuc2l0aXZlLCBzZWFyY2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJlZ2V4Lm1h
dGNoKHVybFN0cmluZykgIT0gLTEpCkBAIC04NjQsNiArODcwLDE2IEBAIGJvb2wgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0
cygpCit7CisgICAgZm9yIChhdXRvJiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0ludGVyY2Vw
dFJlcXVlc3RzLnZhbHVlcygpKSB7CisgICAgICAgIFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBw
ZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgICAgIGlmIChsb2FkZXItPmlkZW50
aWZpZXIoKSkKKyAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5tX2NhbGxiYWNrKGZhbHNlKTsK
KyAgICB9CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwogdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7CiAg
ICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI5LDYyICsxMDQ1LDYwIEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCi0g
ICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVu
YWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAgY29u
dGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vu
c2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9u
YWxOZXR3b3JrU3RhZ2VTdHJpbmcpCiB7Ci0gICAgaWYgKG5ldHdvcmtTdGFnZVN0cmluZykgewot
ICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3Rv
ckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICBpZiAo
IW5ldHdvcmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJV
bmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQogICAgIEludGVyY2VwdCBpbnRlcmNlcHQ7
Ci0gICAgaW50ZXJjZXB0LnVybCA9IHVybDsKKyAgICBpbnRlcmNlcHQudXJsID0gdXJsID8gKnVy
bCA6IFN0cmluZygpOwogICAgIGlmIChvcHRpb25hbENhc2VTZW5zaXRpdmUpCiAgICAgICAgIGlu
dGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAo
b3B0aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElz
UmVnZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisg
ICAgaWYgKG9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKSB7CisgICAgICAgIGF1dG8gbmV0d29y
a1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFn
ZT4oKm9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgaWYgKCFuZXR3b3JrU3Rh
Z2UpIHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3
b3JrU3RhZ2U6ICJfcywgKm9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnRlcmNlcHQubmV0d29ya1N0YWdlID0gKm5l
dHdvcmtTdGFnZTsKKyAgICB9CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5hcHBlbmRJZk5vdENv
bnRhaW5zKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVyY2VwdCBmb3Ig
Z2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVhZHkgZXhpc3RzIl9zOwogfQogCi12b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdv
cmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1vdmVJbnRlcmNl
cHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgs
IGNvbnN0IFN0cmluZyogb3B0aW9uYWxOZXR3b3JrU3RhZ2VTdHJpbmcpCiB7Ci0gICAgaWYgKG5l
dHdvcmtTdGFnZVN0cmluZykgewotICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VT
dHJpbmcpOwotICAgICAgICBpZiAoIW5ldHdvcmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JT
dHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0
YWdlU3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQogICAg
IEludGVyY2VwdCBpbnRlcmNlcHQ7Ci0gICAgaW50ZXJjZXB0LnVybCA9IHVybDsKKyAgICBpbnRl
cmNlcHQudXJsID0gdXJsID8gKnVybCA6IFN0cmluZygpOwogICAgIGlmIChvcHRpb25hbENhc2VT
ZW5zaXRpdmUpCiAgICAgICAgIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2Fz
ZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQu
aXNSZWdleCA9ICpvcHRpb25hbElzUmVnZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRl
cmNlcHRpbmcgcmVxdWVzdHMuCisgICAgaWYgKG9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKSB7
CisgICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVj
dG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsKKyAg
ICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFr
ZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm9wdGlvbmFsTmV0d29ya1N0YWdl
U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnRlcmNl
cHQubmV0d29ya1N0YWdlID0gKm5ldHdvcmtTdGFnZTsKKyAgICB9CiAKICAgICBpZiAoIW1faW50
ZXJjZXB0cy5yZW1vdmVBbGwoaW50ZXJjZXB0KSkKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBpbnRlcmNlcHQgZm9yIGdpdmVuIHVybCBhbmQgZ2l2ZW4gaXNSZWdleCJfczsKIH0KIAot
Ym9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxs
SW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1f
aW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpKTsKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJj
ZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCkgfHwgc2hvdWxkSW50ZXJj
ZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UpOwogfQogCiBib29sIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkyLDcgKzExMDYsMjAgQEAgYm9vbCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSk7
CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSwgTmV0d29ya1N0YWdl
OjpSZXNwb25zZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVk
KT4mJiBoYW5kbGVyKQoreworICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkIHx8ICFzaG91
bGRJbnRlcmNlcHQobG9hZGVyLnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGxvYWRlci5pZGVudGlmaWVyKCkpOworICAgIGF1dG8gcGVuZGluZ1JlcXVl
c3QgPSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0PigpOworICAgIHBlbmRpbmdS
ZXF1ZXN0LT5tX2xvYWRlciA9ICZsb2FkZXI7CisgICAgcGVuZGluZ1JlcXVlc3QtPm1fY2FsbGJh
Y2sgPSBXVEZNb3ZlKGhhbmRsZXIpOworICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNl
dChyZXF1ZXN0SWQsIFdURk1vdmUocGVuZGluZ1JlcXVlc3QpKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNv
dXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3QoKSkpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmIGhhbmRsZXIpCkBAIC0xMTEyLDE5ICsxMTM5LDExOSBAQCB2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlSW50ZXJjZXB0ZWQocmVx
dWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIG51bGxwdHIp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit2b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nKiBtZXRob2QsIGNv
bnN0IEpTT046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkKIHsKKyAg
ICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShy
ZXF1ZXN0SWQpOworICAgIGlmIChwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBSZXNvdXJjZUxv
YWRlciogbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAgICBp
ZiAoIWxvYWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICAvLyBEbyBub3QgdGhyb3cg
dXBvbiBjb250aW51ZSBvZiBjYW5jZWxlZCByZXF1ZXN0cy4KKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICAvLyBTYWZlIHRvIGNvbnN0IGNhc3QgYXQgdGhpcyBwb2ludCwg
d2UgYXJlIG9ubHkgYWRqdXN0aW5nIHRoZSBtZXRob2QgLyBoZWFkZXJzIC8gcG9zdC4KKyAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0gY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3Qq
PigmbG9hZGVyLT5yZXF1ZXN0KCkpOworICAgICAgICBpZiAobWV0aG9kKQorICAgICAgICAgICAg
cmVxdWVzdC0+c2V0SFRUUE1ldGhvZCgqbWV0aG9kKTsKKyAgICAgICAgaWYgKGhlYWRlcnMpIHsK
KyAgICAgICAgICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOworICAgICAgICAgICAg
Zm9yIChhdXRvJiBoZWFkZXIgOiAqaGVhZGVycykgeworICAgICAgICAgICAgICAgIFN0cmluZyBo
ZWFkZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAoaGVhZGVyLnZhbHVlLT5hc1N0cmluZyho
ZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0SGVhZGVycy5hZGQoaGVh
ZGVyLmtleSwgaGVhZGVyVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVxdWVz
dC0+c2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAgICAg
ICB9CisgICAgICAgIGlmIChwb3N0RGF0YSkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlcjsKKyAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKCpwb3N0RGF0YSwgYnVmZmVy
KSkgeworICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2
ZW4gcG9zdERhdGEiX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgUmVmPEZvcm1EYXRhPiBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZShidWZmZXIp
OworICAgICAgICAgICAgcmVxdWVzdC0+c2V0SFRUUEJvZHkoV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcGVuZGluZ1JlcXVlc3QtPm1fY2FsbGJhY2soZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBt
X3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwotICAgIGlmICghcGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
cGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICBp
ZiAocGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7CisgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJl
c3BvbnNlIGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRBc0Vycm9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcmVhc29uKQoreworICAgIGF1dG8gcGVu
ZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7
CisgICAgaWYgKHBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgICAgIGlmICghbG9hZGVy
LT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBh
Ym9ydCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9y
RG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGludGVyY2Vw
dGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgaWYgKHJlYXNv
biA9PSAiQWNjZXNzQ29udHJvbCIpCisgICAgICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwoKSwgIkFjY2VzcyBkZW5p
ZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpOworICAgICAgICBlbHNl
IGlmIChyZWFzb24gPT0gIkNhbmNlbGxhdGlvbiIpCisgICAgICAgICAgICBlcnJvciA9IFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwoKSwgIlJl
cXVlc3QgY2FuY2VsZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7Cisg
ICAgICAgIGVsc2UgaWYgKHJlYXNvbiA9PSAiVGltZW91dCIpCisgICAgICAgICAgICBlcnJvciA9
IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwo
KSwgIlJlcXVlc3QgdGltZWQgb3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsK
KyAgICAgICAgbG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKKyAgICAgICAgcGVuZGluZ1JlcXVlc3Qt
Pm1fY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwZW5kaW5n
SW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVu
IHJlcXVlc3RJZCJfczsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2Vw
dFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3Qg
U3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVz
VGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIGNvbnRlbnQsIGNvbnN0IGJvb2wq
IGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVz
LCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycykK
IHsKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMu
dGFrZShyZXF1ZXN0SWQpOworICAgIGlmIChwZW5kaW5nUmVxdWVzdCAmJiAoIXN0YXR1cyB8fCAh
c3RhdHVzVGV4dCB8fCAhbWltZVR5cGUgfHwgIWhlYWRlcnMpKSB7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gInN0YXR1cywgc3RhdHVzVGV4dCwgbWltZVR5cGUgYW5kIGhlYWRlcnMgbXVzdCBiZSBz
cGVjaWZpZWQgd2hlbiBmdWxmaWxsaW5nIGludGVyY2VwdGVkIHJlcXVlc3QiX3M7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKHBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJlZlB0
cjxSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgp
OworICAgICAgICBpZiAoIWxvYWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICBlcnJv
clN0cmluZyA9ICJVbmFibGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVu
IHByb2Nlc3NlZCJfczsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBpZiAoYmFzZTY0RW5jb2RlZCAmJiAq
YmFzZTY0RW5jb2RlZCAmJiBjb250ZW50KSB7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4g
YnVmZmVyOworICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKmNvbnRlbnQsIGJ1ZmZlcikp
IHsKKyAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZGVjb2RlIGdpdmVu
IGNvbnRlbnQiX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY29udGVudCkKKyAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShjb250ZW50LT51dGY4KCkuZGF0YSgpLCBjb250ZW50LT51dGY4KCkubGVuZ3Ro
KCkpOworCisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocGVuZGluZ1JlcXVlc3Qt
Pm1fbG9hZGVyLT51cmwoKSwgKm1pbWVUeXBlLCBkYXRhLT5zaXplKCksIFN0cmluZygpKTsKKyAg
ICAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6SW5zcGVj
dG9yT3ZlcnJpZGUpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgqc3RhdHVz
KTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoKnN0YXR1c1RleHQpOworICAg
ICAgICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0SGVhZGVyczsKKyAgICAgICAgZm9yIChhdXRvJiBo
ZWFkZXIgOiAqaGVhZGVycykgeworICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAg
ICAgICAgICAgaWYgKGhlYWRlci52YWx1ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAg
ICAgICAgICAgIGV4cGxpY2l0SGVhZGVycy5hZGQoaGVhZGVyLmtleSwgaGVhZGVyVmFsdWUpOwor
ICAgICAgICB9CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShl
eHBsaWNpdEhlYWRlcnMpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgICAg
IGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBkYXRhID0gZGF0
YS5yZWxlYXNlTm9uTnVsbCgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGRhdGEtPnNp
emUoKSkKKyAgICAgICAgICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShk
YXRhKSwgZGF0YS0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAg
ICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5tX2NhbGxiYWNrKHRydWUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBt
X3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwogICAgIGlmICghcGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
cGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKQEAgLTEx
NTIsMTYgKzEyNzksMTYgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdp
dGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICB9CiAKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7Ci0gICAgaWYgKGJhc2U2NEVuY29kZWQp
IHsKKyAgICBpZiAoYmFzZTY0RW5jb2RlZCAmJiAqYmFzZTY0RW5jb2RlZCAmJiBjb250ZW50KSB7
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgICAgIGlmICghYmFzZTY0RGVj
b2RlKGNvbnRlbnQsIGJ1ZmZlcikpIHsKKyAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKmNvbnRl
bnQsIGJ1ZmZlcikpIHsKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNv
ZGUgZ2l2ZW4gY29udGVudCJfczsKICAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5n
dGgoKSk7CisgICAgfSBlbHNlIGlmIChjb250ZW50KQorICAgICAgICBvdmVycmlkZURhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LT51dGY4KCkuZGF0YSgpLCBjb250ZW50LT51dGY4
KCkubGVuZ3RoKCkpOwogCiAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kKG92
ZXJyaWRlUmVzcG9uc2UsIG92ZXJyaWRlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBiMDM4
YTE4NzljMDQzYWExN2RhZTk3NDI1NjkzZjI5YmU0MmUzMjU4Li43YWRmMzBkYTUyMzdjYjVjYjEx
MjhjY2ExZTUyNzVmZDUxODIwYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTg4LDEwICs4OCwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBzZXJpYWxpemVkQ2VydGlmaWNhdGUp
IGZpbmFsOwogICAgIHZvaWQgcmVzb2x2ZVdlYlNvY2tldChFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIGZpbmFsOwogICAgIHZvaWQg
c2V0SW50ZXJjZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgZmluYWw7
Ci0gICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgY29uc3Qg
U3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlSW50ZXJj
ZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VT
ZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdl
U3RyaW5nKSBmaW5hbDsKLSAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpIGZpbmFsOwotICAgIHZvaWQgaW50ZXJjZXB0V2l0aFJl
c3BvbnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcqIG1pbWVUeXBlLCBj
b25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0LCBjb25zdCBKU09OOjpP
YmplY3QqIGhlYWRlcnMpIGZpbmFsOworICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsK
KyAgICB2b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyog
dXJsLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBjb25z
dCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRD
b250aW51ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcqIG1ldGhvZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcqIHBv
c3REYXRhKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdEFzRXJyb3IoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiByZWFzb24pIGZpbmFsOworICAg
IHZvaWQgaW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogY29udGVudCwgY29uc3QgYm9vbCogYmFzZTY0RW5jb2Rl
ZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmlu
Zyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKSBmaW5hbDsKIAogICAg
IC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5
bGUoKTsKQEAgLTExOCw5ICsxMTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgbWFpbkZyYW1lTmF2
aWdhdGVkKERvY3VtZW50TG9hZGVyJik7CiAgICAgdm9pZCBzZXRJbml0aWFsU2NyaXB0Q29udGVu
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsK
ICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50Jik7Ci0gICAg
Ym9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBi
b29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBp
bnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIGJvb2wgaW50ZXJjZXB0UmVxdWVzdChS
ZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoYm9vbCBoYW5kbGVkKT4mJik7CiAKICAgICB2
b2lkIHNlYXJjaE90aGVyUmVxdWVzdHMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lv
biYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJj
aFJlc3VsdD4+Jik7CiAgICAgdm9pZCBzZWFyY2hJblJlcXVlc3QoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9vbCBjYXNlU2Vuc2l0
aXZlLCBib29sIGlzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpOwpAQCAtMTQwLDcgKzE0Miw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUp
OwogCi0gICAgYm9vbCBzaG91bGRJbnRlcmNlcHQoVVJMKTsKKyAgICB1c2luZyBOZXR3b3JrU3Rh
Z2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U7CisgICAgYm9v
bCBzaG91bGRJbnRlcmNlcHQoVVJMLCBOZXR3b3JrU3RhZ2UpOworICAgIHZvaWQgY29udGludWVQ
ZW5kaW5nUmVxdWVzdHMoKTsKICAgICB2b2lkIGNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpOwog
CiAgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXRGb3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQpOwpAQCAtMTUzLDYgKzE1NywxNSBAQCBwcml2YXRlOgogCiAgICAgZG91YmxlIHRpbWVz
dGFtcCgpOwogCisgICAgY2xhc3MgUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QgeworICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCk7CisgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgUGVuZGluZ0ludGVy
Y2VwdFJlcXVlc3QoKSA9IGRlZmF1bHQ7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4g
bV9sb2FkZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYW5kbGVkKT4g
bV9jYWxsYmFjazsKKyAgICB9OworCiAgICAgY2xhc3MgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
KTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yMDQsMTUgKzIxNywxOCBA
QCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBib29sIGNhc2VTZW5zaXRp
dmUgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgaXNSZWdleCB7IGZhbHNlIH07CisgICAgICAgIE5l
dHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UgeyBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlIH07CiAKICAg
ICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRlcmNlcHQmIG90aGVyKSBjb25z
dAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdXJsID09IG90aGVyLnVybAogICAgICAg
ICAgICAgICAgICYmIGNhc2VTZW5zaXRpdmUgPT0gb3RoZXIuY2FzZVNlbnNpdGl2ZQotICAgICAg
ICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdleDsKKyAgICAgICAgICAgICAgICAm
JiBpc1JlZ2V4ID09IG90aGVyLmlzUmVnZXgKKyAgICAgICAgICAgICAgICAmJiBuZXR3b3JrU3Rh
Z2UgPT0gb3RoZXIubmV0d29ya1N0YWdlOwogICAgICAgICB9CiAgICAgfTsKICAgICBWZWN0b3I8
SW50ZXJjZXB0PiBtX2ludGVyY2VwdHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdD4+IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3Rz
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ludGVyY2VwdFJl
c3BvbnNlPj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzOwogCiAgICAgLy8gRklYTUU6IElu
c3BlY3Rvck5ldHdvcmtBZ2VudCBzaG91bGQgbm90IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3Vs
YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAppbmRleCA1YWRjN2RlMzJiMTQ5NjFjNWExMzlhMDcyNDQyNzZlNTdjYjA1
NWJhLi5lZTk5ZTU2YWUzNTIwNzYxMGYyNDE4NmQ3YmE2MjA0MzUyYjVlYTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTgxMyw3ICs4MTMsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQogICAgIGlmIChEb2N1
bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQogICAgICAgICByZXF1ZXN0LnVwZ3Jh
ZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCgqZG9jdW1lbnQpOwogCi0gICAgaWYgKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoJmZyYW1lLCByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
SW50ZXJjZXB0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcpOwog
CiAgICAgcmVxdWVzdC51cGRhdGVSZWZlcnJlclBvbGljeShkb2N1bWVudCgpID8gZG9jdW1lbnQo
KS0+cmVmZXJyZXJQb2xpY3koKSA6IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25n
cmFkZSk7CkBAIC0xNDAwLDcgKzE0MDAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpk
ZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiBS
ZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHQoZnJhbWUoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwg
MCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgIkluc3BlY3RvciBpbnRlcmNlcHQi
X3MgfSk7CiAKICAgICBpZiAocmVxdWVzdC5jaGFyc2V0KCkuaXNFbXB0eSgpICYmICh0eXBlID09
IENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6
VHlwZTo6Q1NTU3R5bGVTaGVldCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0L0luc3BlY3RvclByb3RvY29sLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9JbnNwZWN0b3JQcm90b2NvbC5qcwppbmRleCBmZjU3
ODgxMGZhZTU1MjU5MWQxODJjNWJlMjYwOWM3NzJkZDJlZGUzLi43ODE0NzlmZGI1MzlmMDM5OTNh
ZDNjMTlhY2NiZWFjYTYwZDM2M2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0L0luc3BlY3RvclByb3RvY29sLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvSW5zcGVjdG9yUHJvdG9jb2wuanMKQEAgLTIw
MSwzICsyMDEsMjEgQEAgSW5zcGVjdG9yUHJvdG9jb2wuZGlzcGF0Y2hNZXNzYWdlRnJvbUJhY2tl
bmQgPSBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KQogICAgICAgICB9CiAgICAgfQogfTsKKworSW5z
cGVjdG9yUHJvdG9jb2wucHJvdG9jb2wgPSBuZXcgUHJveHkoe30sIHsKKyAgICBnZXQ6ICh0YXJn
ZXQsIGFnZW50TmFtZSwgcmVjZWl2ZXIpID0+IG5ldyBQcm94eSh7fSwgeworICAgICAgICBnZXQ6
ICh0YXJnZXQsIG1ldGhvZE5hbWUsIHJlY2VpdmVyKSA9PiB7CisgICAgICAgICAgICBjb25zdCBl
dmVudFBhdHRlcm4gPSAvXihvbihjZSk/fG9mZikoW0EtWl1bQS1aYS16MC05XSopLzsKKyAgICAg
ICAgICAgIHZhciBtYXRjaCA9IGV2ZW50UGF0dGVybi5leGVjKG1ldGhvZE5hbWUpOworICAgICAg
ICAgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgICAgICAgcmV0dXJuIGFyZ3MgPT4gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4gSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoYCR7
YWdlbnROYW1lfS4ke21ldGhvZE5hbWV9YCwgYXJncyB8fCB7fSwgeyByZXNvbHZlLCByZWplY3Qg
fSkpOworICAgICAgICAgICAgdmFyIGV2ZW50TmFtZSA9IG1hdGNoWzNdOworICAgICAgICAgICAg
ZXZlbnROYW1lID0gZXZlbnROYW1lLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgZXZlbnROYW1l
LnNsaWNlKDEpOworICAgICAgICAgICAgaWYgKG1hdGNoWzFdID09PSAib25jZSIpCisgICAgICAg
ICAgICAgICAgcmV0dXJuICgpID0+IEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQoeyBldmVu
dDogYCR7YWdlbnROYW1lfS4ke2V2ZW50TmFtZX1gIH0pOworICAgICAgICAgICAgaWYgKG1hdGNo
WzFdID09PSAib2ZmIikKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdGVuZXIgPT4gSW5zcGVj
dG9yUHJvdG9jb2wucmVtb3ZlRXZlbnRMaXN0ZW5lcihgJHthZ2VudE5hbWV9LiR7ZXZlbnROYW1l
fWAsIGxpc3RlbmVyKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lciA9PiBJbnNwZWN0b3JQ
cm90b2NvbC5hZGRFdmVudExpc3RlbmVyKGAke2FnZW50TmFtZX0uJHtldmVudE5hbWV9YCwgbGlz
dGVuZXIpOworICAgICAgICB9CisgICAgfSkKK30pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDM1MzI3MDIz
NWZjNjQ2MzkxODE0MmJkYWFjZjlhMGYxYTJlZWQzNTAuLjVmMzAwMTc3YmRmNmM5NGFmMjg2MGU2
YjIyNmUzNTdmZTBhOGVmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMu
aD4KQEAgLTIzMCw2ICsyMzEsMTUgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKIAogICAgIGlm
ICghdHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlciwgdHJhY2tp
bmdQYXJhbWV0ZXJzKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBO
ZXR3b3JrUHJvY2VzcyIpOworCisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dGVkUmVzb3VyY2VMb2FkZXIgPSAmcmVzb3VyY2VMb2FkZXI7CisgICAgICAgIGlmICghcmVzb3Vy
Y2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyCisg
ICAgICAgICAgICAmJiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
cXVlc3QocmVzb3VyY2VMb2FkZXIsIFt0aGlzLCBwcm90ZWN0ZWRSZXNvdXJjZUxvYWRlciwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCByZXNvdXJjZV0oYm9vbCBoYW5kbGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAo
IWhhbmRsZWQpCisgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJv
Y2VzcygqcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIsIHByb3RlY3RlZFJlc291cmNlTG9hZGVyLT5y
ZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKKyAgICAgICAg
ICAgICAgICB9KSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHNj
aGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2Fk
ZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzcxY2FmYTMwNWEwM2ZkMTYzYmU0ZDk0ZjI3MTFi
MDk2YzZmNTU5OS4uYjZiMjQzNTZlOWMwNjJmNTk0NDY0YzE2ZmZhMmQ0M2U4YTA3NjE1YSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAyLTI5ICBQYXZlbCBGZWxkbWFuICA8cGF2ZWwuZmVs
ZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVl
c3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc0NDYKKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsg
cmVxdWVzdCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgcHJvdG9jb2wgZG9tYWluLgorICAg
ICAgICBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0QXNFcnJvciB0aGF0IGFib3J0cyB0aGUgcmVx
dWVzdCBhbmQgdXBkYXRlcyBleGlzdGluZworICAgICAgICBOZXR3b3JrLmludGVyY2VwdENvbnRp
bnVlIGFuZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UgdG8gYXBwbHkgdG8gcmVxdWVzdHMgYXMgd2Vs
bCBhcyByZXNwb25zZXMuCisgICAgICAgIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZSAn
cmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanM6CisgICAgICAgICogaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1y
ZXNwb25zZS5odG1sOgorCiAyMDIwLTAyLTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0xGQ11bRmxvYXRzXSBGbG9hdGluZ1N0YXRlOjp0b3Agc2hvdWxkIHJl
dHVybiB0b3Btb3N0IGxvZ2ljYWwgdmVydGljYWwgcG9zaXRpb24KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3Qu
anMKaW5kZXggYTAyNjQ5ZDU2YmRiM2QyODVjMWYwZDdmODAwY2ZlNDEwODkyMjY0MS4uODMxYTYx
ZjY3ODVlNDQ4OGIxMmQ3ZGZkZWYxZmU2NmQzNzU1MTIyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3Qu
anMKQEAgLTg3LDEyICs4NywxNCBAQCBUZXN0UGFnZS5ydW5UZXN0ID0gd2luZG93LnJ1blRlc3Qg
PSBmdW5jdGlvbigpCiAgICAgaWYgKHR5cGVvZiB0ZXN0RnVuY3Rpb24gIT09ICJmdW5jdGlvbiIp
IHsKICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBzZW5kIHRlc3QoKSBiZWNhdXNlIGl0IGlzIG5v
dCBhIGZ1bmN0aW9uLiIpOwogICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGxldCB1cmwgPSB0ZXN0UnVubmVyLmluc3BlY3RvclRl
c3RTdHViVVJMOwogICAgIGlmICghdXJsKSB7CiAgICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gb2J0
YWluIGluc3BlY3RvciB0ZXN0IHN0dWIgVVJMLiIpOwogICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1bkluaXRp
YWxpemF0aW9uTWV0aG9kc0luRnJvbnRlbmQoaW5pdGlhbGl6ZXJzKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhlZDI1MmMwNzkzM2JiNGViNDg3MzFmZmFhOWI5ZjBiZDM2ODkw
ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGVzdCByZXF1ZXN0
IGludGVyY2VwdGlvbi4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuc2V0SW50
ZXJjZXB0aW9uRW5hYmxlZAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IHJlcXVlc3RJbnRlcmNlcHRl
ZC5pbnRlcmNlcHRDb250aW51ZQorUEFTUzogUmVzcG9uc2UgZGF0YTogJ3siYWxwaGEiOiJiZXRh
IiwiZ2FtbWEiOjEyMzQ1fScKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IHJlcXVlc3RJbnRlcmNl
cHRlZC5pbnRlcmNlcHRXaXRoUmVzcG9uc2UKK1BBU1M6IHRleHQ6IGludGVyY2VwdGVkIGRhdGEK
K1BBU1M6IHN0YXR1czogMjAwCitQQVNTOiBzdGF0dXNUZXh0OiBPSworUEFTUzogbWltZVR5cGU6
IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQorUEFTUzogbXktaGVhZGVyOiBteS12YWx1ZQorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdEFzRXJyb3IK
K1BBU1M6IFJlcXVlc3QgZXJyb3I6ICdSZXF1ZXN0IGNhbmNlbGVkJworCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogdGVhckRvd24KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRjNmZiNDhlODc1ZGRiMTVj
OTE4YWNmYTExNDM3OWZmZDkzZWNiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKQEAgLTAsMCArMSwxMjYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9j
b2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBmZXRjaERh
dGEoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgn
cmVzb3VyY2VzL2RhdGEuanNvbicpOworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdGV4
dDogYXdhaXQgcmVzcG9uc2UudGV4dCgpLAorICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5z
dGF0dXMsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LAorICAg
ICAgICAgICAgbWltZVR5cGU6IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSwK
KyAgICAgICAgICAgIGhlYWRlcjogcmVzcG9uc2UuaGVhZGVycy5nZXQoJ215LWhlYWRlcicpCisg
ICAgICAgIH07CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm4gZS5tZXNzYWdlOwor
ICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gUHJv
dG9jb2xUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuc2V0SW50ZXJjZXB0aW9uRW5hYmxl
ZCIpOworICAgIGNvbnN0IHByb3RvY29sID0gSW5zcGVjdG9yUHJvdG9jb2wucHJvdG9jb2w7Cisg
ICAgY29uc3QgeyByZXN1bHQgfSA9IGF3YWl0IHByb3RvY29sLlJ1bnRpbWUuZXZhbHVhdGUoeyBl
eHByZXNzaW9uOiAiZG9jdW1lbnQuVVJMIiB9KTsKKyAgICBjb25zdCBiYXNlVVJMID0gcmVzdWx0
LnZhbHVlLnN1YnN0cmluZygwLCByZXN1bHQudmFsdWUubGFzdEluZGV4T2YoIi8iKSk7CisgICAg
Y29uc3QgdXJsID0gYmFzZVVSTCArICIvcmVzb3VyY2VzL2RhdGEuanNvbiI7CisKKyAgICBhd2Fp
dCBQcm9taXNlLmFsbChbcHJvdG9jb2wuUnVudGltZS5lbmFibGUoKSwgcHJvdG9jb2wuTmV0d29y
ay5lbmFibGUoKV0pOworICAgIGF3YWl0IHByb3RvY29sLk5ldHdvcmsuc2V0SW50ZXJjZXB0aW9u
RW5hYmxlZCh7IGVuYWJsZWQ6IHRydWUgfSk7CisgICAgYXdhaXQgcHJvdG9jb2wuTmV0d29yay5h
ZGRJbnRlcmNlcHRpb24oeyB1cmwsIHN0YWdlOiAicmVxdWVzdCIgfSk7CisKKyAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJyZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0
Q29udGludWUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgY29udGludWUgaW50ZXJjZXB0
ZWQgcmVxdWVzdC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgLy8gRmV0
Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAgICBjb25zdCBbZmV0Y2hSZXN1bHRQ
cm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAg
ICAgICAgICBwcm90b2NvbC5SdW50aW1lLmV2YWx1YXRlKHsgZXhwcmVzc2lvbjogImZldGNoRGF0
YSgpIn0pLAorICAgICAgICAgICAgICAgIHByb3RvY29sLk5ldHdvcmsub25jZVJlcXVlc3RJbnRl
cmNlcHRlZCgpCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgLy8gTGV0IHRoZSBsb2Fk
IGNvbnRpbnVlLgorICAgICAgICAgICAgY29uc3QgWyBmZXRjaFJlc3VsdCBdID0gYXdhaXQgUHJv
bWlzZS5hbGwoWworICAgICAgICAgICAgICAgIHByb3RvY29sLlJ1bnRpbWUuYXdhaXRQcm9taXNl
KHsgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9iamVjdElkLCBy
ZXR1cm5CeVZhbHVlOiB0cnVlIH0pLAorICAgICAgICAgICAgICAgIHByb3RvY29sLk5ldHdvcmsu
aW50ZXJjZXB0Q29udGludWUoeyByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1zLnJl
cXVlc3RJZCB9KQorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBQcm90b2NvbFRlc3QucGFz
cygiUmVzcG9uc2UgZGF0YTogJyIgKyBmZXRjaFJlc3VsdC5yZXN1bHQudmFsdWUudGV4dC50cmlt
KCkgKyAiJyIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJyZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0V2l0aFJlc3BvbnNl
IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGZ1bGZpbGwgaW50ZXJjZXB0ZWQgcmVxdWVz
dCB3aXRoIHJlc3BvbnNlLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAv
LyBGZXRjaCBVUkwgYW5kIGludGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJl
c3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAg
ICAgICAgICAgICAgIHByb3RvY29sLlJ1bnRpbWUuZXZhbHVhdGUoeyBleHByZXNzaW9uOiAiZmV0
Y2hEYXRhKCkifSksCisgICAgICAgICAgICAgICAgcHJvdG9jb2wuTmV0d29yay5vbmNlUmVxdWVz
dEludGVyY2VwdGVkKCkKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAvLyBGdWxmaWxs
IHRoZSByZXF1ZXN0IHdpdGggZGF0YS4KKyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJlc3VsdF0g
PSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgcHJvdG9jb2wuUnVudGltZS5h
d2FpdFByb21pc2UoeyBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQu
b2JqZWN0SWQsIHJldHVybkJ5VmFsdWU6IHRydWUgfSksCisgICAgICAgICAgICAgICAgcHJvdG9j
b2wuTmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uc2UoeworICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1zLnJlcXVlc3RJZCwKKyAgICAgICAgICAg
ICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJP
SyIsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgIm15LWhlYWRlciI6ICJteS12YWx1
ZSIgfSwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0iLAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBidG9hKCJpbnRlcmNlcHRlZCBk
YXRhIiksCisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IHRydWUKKyAgICAgICAg
ICAgICAgICB9KQorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBwcmludEZldGNoUmVzdWx0
KGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInJlcXVlc3RJbnRlcmNlcHRlZC5pbnRl
cmNlcHRBc0Vycm9yIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGFib3J0IGludGVyY2Vw
dGVkIHJlcXVlc3Qgd2l0aCBlcnJvci4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAg
ICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAgICBjb25zdCBb
ZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxs
KFsKKyAgICAgICAgICAgICAgICBwcm90b2NvbC5SdW50aW1lLmV2YWx1YXRlKHsgZXhwcmVzc2lv
bjogImZldGNoRGF0YSgpIn0pLAorICAgICAgICAgICAgICAgIHByb3RvY29sLk5ldHdvcmsub25j
ZVJlcXVlc3RJbnRlcmNlcHRlZCgpCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgLy8g
QWJvcnQgdGhlIHJlcXVlc3QgYXMgY2FuY2VsZWQuCisgICAgICAgICAgICBjb25zdCBbZmV0Y2hS
ZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIHByb3RvY29sLlJ1
bnRpbWUuYXdhaXRQcm9taXNlKHsgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2Uu
cmVzdWx0Lm9iamVjdElkLCByZXR1cm5CeVZhbHVlOiB0cnVlIH0pLAorICAgICAgICAgICAgICAg
IHByb3RvY29sLk5ldHdvcmsuaW50ZXJjZXB0QXNFcnJvcih7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAgICAg
ICAgICAgICAgICByZWFzb246ICJDYW5jZWxsYXRpb24iCisgICAgICAgICAgICAgICAgfSkKKyAg
ICAgICAgICAgIF0pOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoIlJlcXVlc3QgZXJy
b3I6ICciICsgZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlICsgIiciKTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAidGVhckRvd24i
LAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgcHJvdG9jb2wuTmV0
d29yay5yZW1vdmVJbnRlcmNlcHRpb24oeyB1cmwsIHN0YWdlOiAicmVxdWVzdCIgfSk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworCisg
ICAgZnVuY3Rpb24gcHJpbnRGZXRjaFJlc3VsdChyZXN1bHQpCisgICAgeworICAgICAgICBQcm90
b2NvbFRlc3QucGFzcygidGV4dDogIiArIHJlc3VsdC50ZXh0KTsKKyAgICAgICAgUHJvdG9jb2xU
ZXN0LnBhc3MoInN0YXR1czogIiArIHJlc3VsdC5zdGF0dXMpOworICAgICAgICBQcm90b2NvbFRl
c3QucGFzcygic3RhdHVzVGV4dDogIiArIHJlc3VsdC5zdGF0dXNUZXh0KTsKKyAgICAgICAgUHJv
dG9jb2xUZXN0LnBhc3MoIm1pbWVUeXBlOiAiICsgcmVzdWx0Lm1pbWVUeXBlKTsKKyAgICAgICAg
UHJvdG9jb2xUZXN0LnBhc3MoIm15LWhlYWRlcjogIiArIHJlc3VsdC5oZWFkZXIpOworICAgIH0K
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVz
dCByZXF1ZXN0IGludGVyY2VwdGlvbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399242</attachid>
            <date>2020-05-12 22:46:16 -0700</date>
            <delta_ts>2020-05-12 22:51:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200512224615.patch</filename>
            <type>text/plain</type>
            <size>55583</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTk5NDI3ZDM3MjJjZWNkZDk3YTYxMDkzNGJjODUzZGQ2MGNlNGM2Li5kYzU3ZDM3ZTkwZDU1Y2M5
ZDNkYWQxOGZjMjE5YzdjMmJmZmM1MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3Qg
aW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0
IGFkZHMgTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAg
ICAgICBjYW4gYmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFn
ZSBlbnVtIGNhbiBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFs
dWVzLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAy
MC0wNS0xMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAg
ICAgRml4IGV4aXN0aW5nIHVzYWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlNDIGFu
ZCBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA2YTNmNDc4MWFmNjI1ZGY1YTg4OWJiOWJhODkxYmIwZmMxN2E4
NjFhLi42ZDg1YTUwMTMwZmEyNWFhZmUwY2Q0NjViODFkMWQyYWVhM2VhNTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDQgQEAKKzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxk
bWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVz
dCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayBy
ZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAgcHJvdG9jb2wgZG9t
YWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRo
YXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3
b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9u
c2UnIHZhbHVlcy4KKwkKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3QuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxJbnRlcmNlcHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVx
dWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5k
aW5nUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpz
ZXRJbnRlcmNlcHRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0QXNFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhS
ZXNwb25zZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6SW50ZXJjZXB0
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cHJlbG9hZCk6CisKIDIwMjAtMDUtMTIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUG9zdGVyIHNldCBhZnRlciBwbGF5YmFjayBiZWdpbnMgc2hvdWxk
IGJlIGlnbm9yZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTVhMWZhOWFiNGI1ODk4ZjQxYzc5Njk2Zjc3YjE0ZjYw
MzA4NTliYi4uMzdlZTYzNmIxOGNkZGRjZjQ1ZjYwNzI5MTMyZDVjOWEyY2IzYTdiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZl
bGRtYW5AZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1
ZXN0IGludGVyY2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NDQ2CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3Jr
IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBk
b21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24g
dGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5l
dHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNw
b25zZScgdmFsdWVzLgorCQorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQpOgorCiAyMDIwLTA1LTEyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsgZHJhZyBhbmQgZHJvcCBoYW5kbGluZyBp
biBwcmVwYXJhdGlvbiBmb3IgR1RLNApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgppbmRleCA3NzdhNTQxNjZlZDY2NjQ1NjFi
M2Y4MjQ5YTZhYmI0YWM1OWQwNDgwLi5hMTY3NzBiYWM0NTY1YzA0NTlmMTFkNGIyMzIxYjU5ODU0
N2UyOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL05ldHdvcmsuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3By
b3RvY29sL05ldHdvcmsuanNvbgpAQCAtMTU1LDcgKzE1NSwxMyBAQAogICAgICAgICAgICAgImlk
IjogIk5ldHdvcmtTdGFnZSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVl
c3QuIiwKLSAgICAgICAgICAgICJlbnVtIjogWyJyZXNwb25zZSJdCisgICAgICAgICAgICAiZW51
bSI6IFsicmVxdWVzdCIsICJyZXNwb25zZSJdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJpZCI6ICJSZXNvdXJjZUVycm9yVHlwZSIsCisgICAgICAgICAgICAidHlwZSI6ICJz
dHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVudCBzdGFnZXMgb2Yg
YSBuZXR3b3JrIHJlcXVlc3QuIiwKKyAgICAgICAgICAgICJlbnVtIjogWyJHZW5lcmFsIiwgIkFj
Y2Vzc0NvbnRyb2wiLCAiQ2FuY2VsbGF0aW9uIiwgIlRpbWVvdXQiXQogICAgICAgICB9CiAgICAg
XSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC0yMzgsNyArMjQ0LDcgQEAKICAgICAgICAgICAgICJu
YW1lIjogImFkZEludGVyY2VwdGlvbiIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWRk
IGFuIGludGVyY2VwdGlvbi4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAi
VVJMIHBhdHRlcm4gdG8gaW50ZXJjZXB0LCBpbnRlcmNlcHQgZXZlcnl0aGluZyBpZiBub3Qgc3Bl
Y2lmaWVkIG9yIGVtcHR5IiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FzZVNlbnNp
dGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJhbWV0ZXIuIiB9
LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJvb2xlYW4i
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxg
IHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0sCiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0aGlzIGFwcGxpZXMgdG8gYWxsIG5l
dHdvcmsgc3RhZ2VzLiIgfQpAQCAtMjU2LDIyICsyNjIsMzQgQEAKICAgICAgICAgfSwKICAgICAg
ICAgewogICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0Q29udGludWUiLAotICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIGFuIGludGVyY2VwdGlvbiB3aXRoIG5vIG1vZGlm
aWNhdGlvbnMuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb250aW51ZSByZXF1ZXN0
IG9yIHJlc3BvbnNlIHdpdGhvdXQgbW9kaWZpY2F0aW9ucy4iLAogICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6
ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2Vw
dGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51ZS4iIH0KICAgICAgICAg
ICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgaW50
ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRlZCBvbmUuIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRy
ZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRl
cmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibWV0aG9kIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlv
bmFsIjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IG1ldGhvZC4iIH0sCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwi
OiB0cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3QgdXJsLiIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdo
IG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEsIGJhc2U2NC1lbmNvZGVkLiIgfQor
ICAgICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6
ICJpbnRlcmNlcHRXaXRoUmVzcG9uc2UiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBy
b3ZpZGUgcmVzcG9uc2UgY29udGVudCBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVzcG9uc2UuIiwKICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVx
dWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIg
Zm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAotICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4i
LCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBlIjogInN0cmluZyIs
ICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2NEVu
Y29kZWQiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRydWUsIGlmIGNvbnRlbnQgd2FzIHNlbnQgYXMgYmFzZTY0LiIgfSwKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIm1pbWVUeXBlIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIk1JTUUgVHlwZSBmb3IgdGhlIGRhdGEuIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlLiBQYXNz
IHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0LiBQYXNzIHRo
cm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAotICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRocm91Z2ggb3Jp
Z2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1
ZXMgaWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlcnJvclR5
cGUiLCAiJHJlZiI6ICJSZXNvdXJjZUVycm9yVHlwZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJEZWxpdmVyIGVycm9yIHJlYXNvbiBmb3IgdGhlIHJlcXVlc3QgZmFpbHVyZS4i
IH0KICAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCkBAIC0zNDgsOSArMzY2LDE3IEBA
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXNvdXJjZSIsICIkcmVmIjogIkNhY2hlZFJl
c291cmNlIiwgImRlc2NyaXB0aW9uIjogIkNhY2hlZCByZXNvdXJjZSBkYXRhLiIgfQogICAgICAg
ICAgICAgXQogICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJyZXF1
ZXN0SW50ZXJjZXB0ZWQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4g
SFRUUCByZXF1ZXN0IGhhcyBiZWVuIGludGVyY2VwdGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNw
b25kIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4sIDxjb2RlPk5l
dHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Q8L2NvZGU+YCBvciA8Y29kZT5OZXR3b3JrLmludGVy
Y2VwdFdpdGhSZXNwb25zZTwvY29kZT5gIHRvIHJlc29sdmUgdGhpcyByZXF1ZXN0LiIsCisgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVl
c3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZv
ciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8
Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZXF1ZXN0IiwgIiRyZWYiOiAiUmVxdWVzdCIsICJkZXNjcmlwdGlvbiI6
ICJPcmlnaW5hbCByZXF1ZXN0IGNvbnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMg
Y29udGludWVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7CiAgICAg
ICAgICAgICAibmFtZSI6ICJyZXNwb25zZUludGVyY2VwdGVkIiwKLSAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQu
IFRoZSBmcm9udGVuZCBtdXN0IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRD
b250aW51ZTwvY29kZT4gb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uczwvY29k
ZT5gIHRvIGNvbnRpbnVlIHRoaXMgcmVzcG9uc2UuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJGaXJlZCB3aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBm
cm9udGVuZCBtdXN0IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51
ZTwvY29kZT4gb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0
byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdv
cmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxs
QmVTZW50PC9jb2RlPi4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXNwb25zZSIs
ICIkcmVmIjogIlJlc3BvbnNlIiwgImRlc2NyaXB0aW9uIjogIk9yaWdpbmFsIHJlc3BvbnNlIGNv
bnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMgY29udGludWVkLiIgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cAppbmRleCAwYzQ0MmVlOTA4ODc3ZDIwNjdkNjVlODc0NDE2NTJhOGNmMDBjODhlLi5kMTBiMzI1
NTEzZTJhY2EwNmI3YTM3YTg1NzA4NmFhMTJiYWRjNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODEwLDEw
ICs4MTAsMTcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2Fj
aGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJiBjYWMKICAgICB9CiB9CiAKLWJvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKLSAgICAgICAgcmV0dXJuIG5l
dHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CisgICAgICAgIHJldHVy
biBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVx
dWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgICAgICBy
ZXR1cm4gbmV0d29ya0FnZW50LT5zaG91bGRJbnRlcmNlcHRSZXF1ZXN0KHJlcXVlc3QpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KIApAQCAtODI0LDYgKzgzMSwxMiBAQCBib29sIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBu
ZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgp
KQorICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2Vw
dFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRl
eCAwM2JkZDU1Y2M5MzBkZTBjZmM2MWY4ZDllNDIxMGY0OTUyYWE0NjMzLi41ZjY5YTJjN2VlYTM0
ZTJlYTA4MjRiOTFjNGJjZTQ2ODRlZDkyYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBACiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgi
CiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKQEAgLTIzMiw4ICsyMzMsMTAgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKFBhZ2Um
LCBib29sIHVzZURhcmtBcHBlYXJhbmNlKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUNh
Y2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CiAKLSAgICBzdGF0aWMgYm9vbCB3aWxsSW50
ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAg
IHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZy
YW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYpOwogICAgIHN0YXRpYyB2
b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0
YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC00MzcsOCArNDQwLDEwIEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKTsKICAgICBzdGF0aWMgdm9pZCB3aWxs
RGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGlj
IGJvb2wgd2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGlj
IGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Kik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1l
c3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtMTI0OSwxMSArMTI1NCwxOSBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UmCiAgICAgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoY2Fj
aGVkUmVzb3VyY2UpOwogfQogCi1pbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CiAgICAg
aWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJh
bWUoZnJhbWUpKQotICAgICAgICByZXR1cm4gd2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuIHdpbGxJbnRlcmNlcHRJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0
UmVxdWVzdChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHVibGljOjpoYXNGcm9u
dGVuZHMoKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0
UmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtMTI2NSw2ICsxMjc4LDEzIEBAIGlubGluZSBib29sIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1l
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVyKQoreworICAg
IEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3Qo
ZnJhbWUsIHJlcXVlc3QpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShsb2FkZXIuZnJhbWUoKSkpCisgICAgICAgIGludGVy
Y2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFu
ZGxlcikpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4
IDk1NGFhZjEyMWE5ZmE1MDdkODNiYzEwYWUzN2RlMWYxMjhmN2RjZmMuLjQwNjY4YTFjYjY5ZmI3
NzQxNmY4Mjc2ZDlkZGQwMTk4OGU1ZDBiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC0z
MCwxMSArMzAsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitib29sIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGNvbnN0
IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJl
dHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoZnJh
bWUsIHJlcXVlc3QpOworfQorCiBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSk7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVyKQoreworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwor
fQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9u
c2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJh
bWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQuaAppbmRleCBiNjdlODliODBiNGU3YTg1ODZjYWM4MWFkZTVkNThhMWJjYjBkNDMxLi41NDNm
NWIwMzM1YzFlZDZkZDNjNzY1YmIzMWY4MTEzYzM0NzA2NzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5o
CkBAIC0zNiwxNCArMzYsMjcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQgewogcHVibGljOgorICAgIHN0
YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVz
cG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNl
SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3Rh
dGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9hZGVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJik7CiAgICAgc3RhdGlj
IHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7
CiB9OwogCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3Vs
ZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsK
KyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hv
dWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFsKCpmcmFtZSwgcmVxdWVzdCk7Cit9CisKIGlubGlu
ZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOwpAQCAtNTMsNiAr
NjYsMTIgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91
bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSoKICAgICByZXR1cm4gc2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlKTsKIH0KIAoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNl
TG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGxvYWRlci5mcmFtZSgpLCBsb2FkZXIucmVx
dWVzdCgpKSk7CisgICAgaW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGxvYWRlciwgV1RGTW92ZSho
YW5kbGVyKSk7Cit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktp
dDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+
JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcAppbmRleCBhZmNkZDJhN2ZhZmZlMGJlYzk4MjA3MmQ4OTRiYzg1YzZlMzBjNDRjLi5kZTky
ZmM2ODllZTlhOGMyMGJkMDYzNzVmNDk4MWQwMmQzMTA3NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgorI2lu
Y2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKQEAgLTg0MSwxMiArODQyLDEzIEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBt
X3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAgICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFy
KCk7CiAKKyAgICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIGNvbnRpbnVlUGVuZGlu
Z1Jlc3BvbnNlcygpOwogCiAgICAgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoZmFsc2UpOwog
fQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwp
Citib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwsIE5l
dHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UpCiB7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwogCkBAIC04NTUsNiArODU3LDEwIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Zm9yIChhdXRvJiBpbnRlcmNlcHQgOiBtX2ludGVyY2VwdHMpIHsKKyAgICAgICAgaWYgKGludGVy
Y2VwdC5uZXR3b3JrU3RhZ2UgIT0gbmV0d29ya1N0YWdlKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChpbnRlcmNlcHQudXJsLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBhdXRvIHNlYXJjaFN0cmluZ1R5cGUgPSBpbnRlcmNlcHQuaXNSZWdl
eCA/IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OlNlYXJjaFN0cmluZ1R5cGU6OlJlZ2V4IDogQ29u
dGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6RXhhY3RTdHJpbmc7CiAgICAg
ICAgIGF1dG8gcmVnZXggPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpjcmVhdGVSZWd1bGFyRXhw
cmVzc2lvbkZvclNlYXJjaFN0cmluZyhpbnRlcmNlcHQudXJsLCBpbnRlcmNlcHQuY2FzZVNlbnNp
dGl2ZSwgc2VhcmNoU3RyaW5nVHlwZSk7CiAgICAgICAgIGlmIChyZWdleC5tYXRjaCh1cmxTdHJp
bmcpICE9IC0xKQpAQCAtODY0LDYgKzg3MCwxNiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMoKQoreworICAg
IGZvciAoYXV0byYgcGVuZGluZ1JlcXVlc3QgOiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy52
YWx1ZXMoKSkgeworICAgICAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcGVuZGluZ1JlcXVl
c3QtPm1fbG9hZGVyLmdldCgpOworICAgICAgICBpZiAobG9hZGVyLT5pZGVudGlmaWVyKCkpCisg
ICAgICAgICAgICBwZW5kaW5nUmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxlcigmbG9hZGVyLT5y
ZXF1ZXN0KCkpOworICAgIH0KKyAgICBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5jbGVhcigp
OworfQorCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVzcG9u
c2VzKCkKIHsKICAgICBmb3IgKGF1dG8mIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSA6IG1fcGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlcy52YWx1ZXMoKSkKQEAgLTEwMjksNjIgKzEwNDUsNjggQEAg
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNldEludGVyY2VwdGlvbkVuYWJsZWQoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBib28KIAogICAgIG1faW50ZXJjZXB0aW9uRW5hYmxlZCA9IGVu
YWJsZWQ7CiAKLSAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKKyAgICBpZiAoIW1faW50
ZXJjZXB0aW9uRW5hYmxlZCkgeworICAgICAgICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwog
ICAgICAgICBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsKKyAgICB9CiB9CiAKLXZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdl
U3RyaW5nKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3Ry
aW5nKiBvcHRpb25hbE5ldHdvcmtTdGFnZVN0cmluZykKIHsKLSAgICBpZiAobmV0d29ya1N0YWdl
U3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0g
ICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9IG1h
a2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpuZXR3b3JrU3RhZ2VTdHJpbmcp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgSW50ZXJjZXB0
IGludGVyY2VwdDsKICAgICBpbnRlcmNlcHQudXJsID0gdXJsOwogICAgIGlmIChvcHRpb25hbENh
c2VTZW5zaXRpdmUpCiAgICAgICAgIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNl
cHQuaXNSZWdleCA9ICpvcHRpb25hbElzUmVnZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBp
bnRlcmNlcHRpbmcgcmVxdWVzdHMuCisgICAgaWYgKG9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5n
KSB7CisgICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5z
cGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsK
KyAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0g
bWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm9wdGlvbmFsTmV0d29ya1N0
YWdlU3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnRl
cmNlcHQubmV0d29ya1N0YWdlID0gKm5ldHdvcmtTdGFnZTsKKyAgICB9CiAKICAgICBpZiAoIW1f
aW50ZXJjZXB0cy5hcHBlbmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9y
U3RyaW5nID0gIkludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVh
ZHkgZXhpc3RzIl9zOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50
ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1Jl
Z2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpyZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25z
dCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOZXR3b3JrU3Rh
Z2VTdHJpbmcpCiB7Ci0gICAgaWYgKG5ldHdvcmtTdGFnZVN0cmluZykgewotICAgICAgICBhdXRv
IG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBh
cnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3
b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICBpZiAoIW5ldHdvcmtTdGFn
ZSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdv
cmtTdGFnZTogIl9zLCAqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgIH0KLQogICAgIEludGVyY2VwdCBpbnRlcmNlcHQ7CiAgICAgaW50ZXJj
ZXB0LnVybCA9IHVybDsKICAgICBpZiAob3B0aW9uYWxDYXNlU2Vuc2l0aXZlKQogICAgICAgICBp
bnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSA9ICpvcHRpb25hbENhc2VTZW5zaXRpdmU7CiAgICAgaWYg
KG9wdGlvbmFsSXNSZWdleCkKICAgICAgICAgaW50ZXJjZXB0LmlzUmVnZXggPSAqb3B0aW9uYWxJ
c1JlZ2V4OwotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgaW50ZXJjZXB0aW5nIHJlcXVlc3RzLgor
ICAgIGlmIChvcHRpb25hbE5ldHdvcmtTdGFnZVN0cmluZykgeworICAgICAgICBhdXRvIG5ldHdv
cmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3Rh
Z2U+KCpvcHRpb25hbE5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgIGlmICghbmV0d29ya1N0
YWdlKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0
d29ya1N0YWdlOiAiX3MsICpvcHRpb25hbE5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9ICpu
ZXR3b3JrU3RhZ2U7CisgICAgfQogCiAgICAgaWYgKCFtX2ludGVyY2VwdHMucmVtb3ZlQWxsKGlu
dGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBn
aXZlbiB1cmwgYW5kIGdpdmVuIGlzUmVnZXgiX3M7CiB9CiAKLWJvb2wgSW5zcGVjdG9yTmV0d29y
a0FnZW50Ojp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCitib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVx
dWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KSB8fCBzaG91bGRJbnRlcmNlcHQocmVx
dWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgp
KTsKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFn
ZTo6UmVxdWVzdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRl
cmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwOTIs
NyArMTExNCwxOCBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIGlmICghbV9pbnRlcmNl
cHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gc2hvdWxk
SW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpKTsKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJl
c3BvbnNlLnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlKTsKK30KKwordm9pZCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVy
KQoreworICAgIEFTU0VSVChtX2VuYWJsZWQpOworICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVu
YWJsZWQpOworCisgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVx
dWVzdElkKGxvYWRlci5pZGVudGlmaWVyKCkpOworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBt
YWtlVW5pcXVlPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0PigmbG9hZGVyLCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKKyAgICBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5zZXQocmVxdWVzdElkLCBXVEZN
b3ZlKHBlbmRpbmdSZXF1ZXN0KSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJ
bnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRl
ci5yZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQpAQCAtMTExNCwxNyArMTE0Nywx
NDAgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLAogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCkKIHsKKyAgICBhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0ID0gbV9w
ZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlmIChwZW5kaW5n
SW50ZXJjZXB0UmVxdWVzdCkgeworICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdC0+bV9j
b21wbGV0aW9uSGFuZGxlcigmcGVuZGluZ0ludGVyY2VwdFJlcXVlc3QtPm1fbG9hZGVyLT5yZXF1
ZXN0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBwZW5kaW5nSW50ZXJj
ZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQp
OwotICAgIGlmICghcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7Ci0gICAgICAgIGVycm9yU3Ry
aW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVl
c3RJZCJfczsKKyAgICBpZiAocGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7CisgICAgICAgIHBl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRp
bmcgaW50ZXJjZXB0IHJlcXVlc3Qgb3IgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsK
K30KKwordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyogbWV0aG9kLCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFk
ZXJzLCBjb25zdCBTdHJpbmcqIHBvc3REYXRhKQoreworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3Qg
PSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7CisgICAgaWYgKHBl
bmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBwZW5kaW5n
UmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVy
KCkpIHsKKyAgICAgICAgICAgIC8vIERvIG5vdCB0aHJvdyB1cG9uIGNvbnRpbnVlIG9mIGNhbmNl
bGVkIHJlcXVlc3RzLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8v
IFNhZmUgdG8gY29uc3QgY2FzdCBhdCB0aGlzIHBvaW50LCB3ZSBhcmUgb25seSBhZGp1c3Rpbmcg
dGhlIG1ldGhvZCAvIGhlYWRlcnMgLyBwb3N0LgorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOworICAgICAgICBpZiAodXJsKQorICAgICAgICAgICAg
cmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgKnVybCkpOworICAgICAgICBpZiAobWV0aG9kKQorICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCptZXRob2QpOworICAgICAgICBpZiAoaGVh
ZGVycykgeworICAgICAgICAgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6ICpoZWFkZXJzKSB7CisgICAgICAgICAgICAgICAg
U3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICAgICAgICAgIGlmIChoZWFkZXIudmFsdWUtPmFz
U3RyaW5nKGhlYWRlclZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRIZWFkZXJz
LmFkZChoZWFkZXIua2V5LCBoZWFkZXJWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAocG9zdERhdGEpIHsKKyAgICAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBidWZmZXI7CisgICAgICAgICAgICBpZiAoIWJhc2U2NERlY29kZSgqcG9zdERhdGEs
IGJ1ZmZlcikpIHsKKyAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZGVj
b2RlIGdpdmVuIHBvc3REYXRhIl9zOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIFJlZjxGb3JtRGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUo
YnVmZmVyKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShkYXRhKSk7
CisgICAgICAgIH0KKyAgICAgICAgcGVuZGluZ1JlcXVlc3QtPm1fY29tcGxldGlvbkhhbmRsZXIo
JnJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcGVuZGluZ0ludGVyY2Vw
dFJlc3BvbnNlLT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKKyAgICBlcnJvclN0cmlu
ZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJ
ZCJfczsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNw
b25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBt
aW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwgY29u
c3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Omlu
dGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIGNvbnRlbnQsIGNvbnN0IGJvb2wqIGJhc2U2NEVu
Y29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBT
dHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3Ry
aW5nKiBlcnJvclR5cGVTdHJpbmcpCiB7CisgICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAgICBpZiAocGVuZGluZ1Jl
cXVlc3QgJiYgZXJyb3JUeXBlU3RyaW5nKSB7CisgICAgICAgIFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgICAgIGlmICghbG9hZGVy
LT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBh
Ym9ydCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdXRvIGVycm9yVHlwZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZT4oKmVycm9yVHlw
ZVN0cmluZyk7CisgICAgICAgIGlmICghZXJyb3JUeXBlKSB7CisgICAgICAgICAgICBlcnJvclN0
cmluZyA9ICJVbmtub3duIGVycm9yIHR5cGUiX3M7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKKyAgICAgICAgc3dpdGNoIChlcnJv
clR5cGUudmFsdWUoKSkgeworICAgICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6OlJlc291cmNlRXJyb3JUeXBlOjpHZW5lcmFsOgorICAgICAgICAgICAgZXJyb3IgPSBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJS
ZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6OlJlc291cmNlRXJyb3JUeXBlOjpBY2Nlc3NDb250cm9sOgorICAgICAgICAgICAgZXJyb3Ig
PSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJs
KCksICJBY2Nlc3MgZGVuaWVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9s
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpDYW5jZWxsYXRpb246CisgICAgICAgICAgICBl
cnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVy
LT51cmwoKSwgIlJlcXVlc3QgY2FuY2VsZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNl
bGxhdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6VGltZW91dDoKKyAgICAgICAgICAg
IGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2Fk
ZXItPnVybCgpLCAiUmVxdWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRp
bWVvdXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBsb2FkZXItPmRpZEZhaWwoZXJyb3IpOworICAgICAgICBwZW5kaW5nUmVxdWVzdC0+
bV9jb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAocGVuZGluZ1JlcXVlc3QgJiYgKCFzdGF0dXMgfHwgIXN0YXR1c1RleHQgfHwgIW1pbWVU
eXBlIHx8ICFoZWFkZXJzKSkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJzdGF0dXMsIHN0YXR1
c1RleHQsIG1pbWVUeXBlIGFuZCBoZWFkZXJzIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gZnVsZmls
bGluZyBpbnRlcmNlcHRlZCByZXF1ZXN0Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IGxv
YWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICAgICAgaWYgKCFsb2Fk
ZXItPmlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRv
IGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQiX3M7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsKKyAgICAgICAgaWYgKGJhc2U2NEVuY29kZWQgJiYgKmJhc2U2NEVuY29kZWQgJiYgY29u
dGVudCkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICAgICAgICAg
IGlmICghYmFzZTY0RGVjb2RlKCpjb250ZW50LCBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBjb250ZW50Il9zOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICB9IGVsc2UgaWYgKGNv
bnRlbnQpCisgICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC0+
dXRmOCgpLmRhdGEoKSwgY29udGVudC0+dXRmOCgpLmxlbmd0aCgpKTsKKworICAgICAgICAvLyBN
aW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9yIC0gcmVwb3J0IGRpZFJlY2VpdmVSZXNwb25zZSAm
IGRpZEZpbmlzaExvYWRpbmcuCisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocGVu
ZGluZ1JlcXVlc3QtPm1fbG9hZGVyLT51cmwoKSwgKm1pbWVUeXBlLCBkYXRhLT5zaXplKCksIFN0
cmluZygpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNv
dXJjZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVz
Q29kZSgqc3RhdHVzKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoKnN0YXR1
c1RleHQpOworICAgICAgICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0SGVhZGVyczsKKyAgICAgICAg
Zm9yIChhdXRvJiBoZWFkZXIgOiAqaGVhZGVycykgeworICAgICAgICAgICAgU3RyaW5nIGhlYWRl
clZhbHVlOworICAgICAgICAgICAgaWYgKGhlYWRlci52YWx1ZS0+YXNTdHJpbmcoaGVhZGVyVmFs
dWUpKQorICAgICAgICAgICAgICAgIGV4cGxpY2l0SGVhZGVycy5hZGQoaGVhZGVyLmtleSwgaGVh
ZGVyVmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5cGUo
KSk7CisgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVy
LCBkYXRhID0gZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVCdWZm
ZXIoV1RGTW92ZShkYXRhKSwgZGF0YS0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2Up
OworICAgICAgICAgICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtMb2FkTWV0cmlj
cygpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5tX2NvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBwZW5k
aW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShy
ZXF1ZXN0SWQpOwogICAgIGlmICghcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7CiAgICAgICAg
IGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdp
dmVuIHJlcXVlc3RJZCJfczsKQEAgLTExNTIsMTYgKzEzMDgsMTYgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnMKICAgICB9CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7
Ci0gICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKKyAgICBpZiAoYmFzZTY0RW5jb2RlZCAmJiAqYmFz
ZTY0RW5jb2RlZCAmJiBjb250ZW50KSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7
Ci0gICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRlbnQsIGJ1ZmZlcikpIHsKKyAgICAgICAg
aWYgKCFiYXNlNjREZWNvZGUoKmNvbnRlbnQsIGJ1ZmZlcikpIHsKICAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gY29udGVudCJfczsKICAgICAgICAgICAg
IHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgb3ZlcnJpZGVEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0
YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5ndGgoKSk7CisgICAgfSBlbHNlIGlmIChjb250ZW50KQor
ICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LT51dGY4
KCkuZGF0YSgpLCBjb250ZW50LT51dGY4KCkubGVuZ3RoKCkpOwogCiAgICAgcGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlLT5yZXNwb25kKG92ZXJyaWRlUmVzcG9uc2UsIG92ZXJyaWRlRGF0YSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaAppbmRleCBiZmQxMzFlOWI1ODU2Yzg0ZGE3NzI0ODA1ZTcxMzk3YjdjNzQ4
NmE5Li41ODY0NTIzNDU0ZmE4NTNhMjVkMWUwOGExMDgxYzk2YzYxNDIwYTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmgKQEAgLTkxLDcgKzkxLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9u
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5n
KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1Jl
Z2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7CiAgICAgdm9pZCBp
bnRlcmNlcHRDb250aW51ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKSBm
aW5hbDsKLSAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5j
b2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0
cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKSBmaW5hbDsKKyAg
ICB2b2lkIGludGVyY2VwdFdpdGhSZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcqIHBvc3REYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIGNvbnRlbnQsIGNvbnN0IGJvb2wqIGJhc2U2NEVuY29k
ZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJp
bmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5n
KiBlcnJvclR5cGUpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAg
ICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAtMTE4LDkgKzExOSwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXImKTsKICAgICB2
b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2Fs
Y3VsYXRpb24oRG9jdW1lbnQmKTsKLSAgICBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOworICAgIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwor
ICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hP
dGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYp
OwogICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBp
c1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmlj
VHlwZXM6OlNlYXJjaE1hdGNoPj4mKTsKQEAgLTE0MCw3ICsxNDMsOSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKIAotICAgIGJv
b2wgc2hvdWxkSW50ZXJjZXB0KFVSTCk7CisgICAgdXNpbmcgTmV0d29ya1N0YWdlID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlOworICAgIGJvb2wgc2hvdWxkSW50
ZXJjZXB0KFVSTCwgTmV0d29ya1N0YWdlKTsKKyAgICB2b2lkIGNvbnRpbnVlUGVuZGluZ1JlcXVl
c3RzKCk7CiAgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsKIAogICAgIFdlYlNv
Y2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKQEAg
LTE1Myw2ICsxNTgsMjAgQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAor
ICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0IHsKKyAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOworICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0
KFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICA6IG1fbG9h
ZGVyKGxvYWRlcikKKyAgICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgUGVuZGluZ0ludGVyY2Vw
dFJlcXVlc3QoKSA9IGRlZmF1bHQ7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbV9s
b2FkZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Kik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgfTsKKwogICAgIGNsYXNzIFBlbmRpbmdJ
bnRlcmNlcHRSZXNwb25zZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJ
bnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
MjA0LDE1ICsyMjMsMTggQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAg
Ym9vbCBjYXNlU2Vuc2l0aXZlIHsgdHJ1ZSB9OwogICAgICAgICBib29sIGlzUmVnZXggeyBmYWxz
ZSB9OworICAgICAgICBOZXR3b3JrU3RhZ2UgbmV0d29ya1N0YWdlIHsgTmV0d29ya1N0YWdlOjpS
ZXNwb25zZSB9OwogCiAgICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZXJj
ZXB0JiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHVybCA9PSBv
dGhlci51cmwKICAgICAgICAgICAgICAgICAmJiBjYXNlU2Vuc2l0aXZlID09IG90aGVyLmNhc2VT
ZW5zaXRpdmUKLSAgICAgICAgICAgICAgICAmJiBpc1JlZ2V4ID09IG90aGVyLmlzUmVnZXg7Cisg
ICAgICAgICAgICAgICAgJiYgaXNSZWdleCA9PSBvdGhlci5pc1JlZ2V4CisgICAgICAgICAgICAg
ICAgJiYgbmV0d29ya1N0YWdlID09IG90aGVyLm5ldHdvcmtTdGFnZTsKICAgICAgICAgfQogICAg
IH07CiAgICAgVmVjdG9yPEludGVyY2VwdD4gbV9pbnRlcmNlcHRzOworICAgIEhhc2hNYXA8U3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+PiBtX3BlbmRpbmdJ
bnRlcmNlcHRSZXF1ZXN0czsKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZT4+IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlczsKIAog
ICAgIC8vIEZJWE1FOiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQgc2hvdWxkIG5vdCBiZSBhd2FyZSBv
ZiBzdHlsZSByZWNhbGN1bGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjMxZWRlYzhjY2M3MWQ2NTIxNzEw
NjM2M2Y1Y2MzNDk5MGExNjQ3ZS4uNjU5ZTJmZTg5MDdiMzE1OTc2NjBhN2RkYzQ4Yjk0NWQzM2Yw
ZjVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC04NDYsNyArODQ2LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXUKIAogICAgIHJlcXVlc3QudXBkYXRlUmVmZXJyZXJQb2xpY3koZG9jdW1lbnQoKSA/IGRvY3Vt
ZW50KCktPnJlZmVycmVyUG9saWN5KCkgOiBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5E
b3duZ3JhZGUpOwogCi0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVy
Y2VwdFJlcXVlc3QoJmZyYW1lLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KCZmcmFtZSwgcmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGluZ1BvbGljeShDYWNo
aW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcpOwogCiAgICAgYXV0byYgcGFnZSA9ICpmcmFtZS5w
YWdlKCk7CkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBWZWN0b3I8UmVmPFNWR0ltYWdlPj4gQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmFsbENhY2hlZFNWR0ltYWdlcygpIGNvbnN0CiAKIFJlc291cmNlRXJy
b3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNl
TG9hZGVyOjpwcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEludGVyY2VwdFJlcXVlc3QoZnJhbWUoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkp
CisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChmcmFtZSgp
LCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCAiSW5zcGVjdG9yIGludGVyY2VwdCJfcyB9KTsKIAog
ICAgIGlmIChyZXF1ZXN0LmNoYXJzZXQoKS5pc0VtcHR5KCkgJiYgKHR5cGUgPT0gQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6OlNjcmlwdCB8fCB0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NT
dHlsZVNoZWV0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBiOGRjY2FkMmMyY2Y4ZDAwMDE0MDA0MDdjYWNh
NmUyN2IxZjg4MjQ5Li4yMTAyMzk0Y2RmZjM1NjNjM2MwNGM2YzkyM2JjNzYwZjYxZGI0YjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hU
TUxGcmFtZU93bmVyRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBAIC0yMzAsOCArMjMxLDE4
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYg
cmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAoIXRyeUxvYWRpbmdVc2luZ1VS
TFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykpIHsKICAg
ICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVM
b2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MiKTsKLSAg
ICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2Up
KTsKLSAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci5vcHRpb25z
KCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfHwgIUluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXNvdXJjZUxvYWRlci5m
cmFtZSgpLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkpKSB7CisgICAgICAgICAgICBzY2hlZHVs
ZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJl
cXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBw
cm90ZWN0ZWRSZXNvdXJjZUxvYWRlciA9ICZyZXNvdXJjZUxvYWRlcjsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9hZGVy
LCBbdGhpcywgcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycywgc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcmVzb3VyY2VdKGNvbnN0IFJl
c291cmNlUmVxdWVzdCogcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAocmVxdWVz
dCkKKyAgICAgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoKnByb3Rl
Y3RlZFJlc291cmNlTG9hZGVyLCAqcmVxdWVzdCwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShy
ZXNvdXJjZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9KTsKICAgICB9CiAKICAg
ICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6
IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNzg4YTQ1Yjc3M2Qw
MjcyNmU0YmFmNGNmMGU4NGM3ZDk2N2E0MDBiLi4yN2U0NTY5NzQ4YTMwMmY5YjhmZDkwNjhkNDE2
YTA1OTNlMTM0YmFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDItMjkgIFBhdmVsIEZl
bGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlu
dHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yaworCXBy
b3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlm
aWNhdGlvbiB0aGF0CisJY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBO
ZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKwkncmVxdWVzdCcgYW5kICdyZXNwb25zZScg
dmFsdWVzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3Rv
Y29sLXRlc3QuanM6CisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29yay9s
b2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sOgorCiAyMDIwLTA1
LTEyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAg
IFtXaW5DYWlyb11bV0sxXSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZG9lc24ndCB3b3JrIHNpbmNl
IHIyNDQxODIgaW4gQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmcgbW9kZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVz
dC5qcwppbmRleCBhMDI2NDlkNTZiZGIzZDI4NWMxZjBkN2Y4MDBjZmU0MTA4OTIyNjQxLi44MzFh
NjFmNjc4NWU0NDg4YjEyZDdkZmRlZjFmZTY2ZDM3NTUxMjIyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVz
dC5qcwpAQCAtODcsMTIgKzg3LDE0IEBAIFRlc3RQYWdlLnJ1blRlc3QgPSB3aW5kb3cucnVuVGVz
dCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodHlwZW9mIHRlc3RGdW5jdGlvbiAhPT0gImZ1bmN0aW9u
IikgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHNlbmQgdGVzdCgpIGJlY2F1c2UgaXQgaXMg
bm90IGEgZnVuY3Rpb24uIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbGV0IHVybCA9IHRlc3RSdW5uZXIuaW5zcGVjdG9y
VGVzdFN0dWJVUkw7CiAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBv
YnRhaW4gaW5zcGVjdG9yIHRlc3Qgc3R1YiBVUkwuIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuSW5p
dGlhbGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZChpbml0aWFsaXplcnMpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMyNGM5NmFkNDI4MzExYzViMWYwNzU5ZmM2YzhlNzU2YWM2
ZTFkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitUZXN0IHJlcXVl
c3QgaW50ZXJjZXB0aW9uLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5zZXRJ
bnRlcmNlcHRpb25FbmFibGVkCistLSBSdW5uaW5nIHRlc3QgY2FzZTogcmVxdWVzdEludGVyY2Vw
dGVkLmludGVyY2VwdENvbnRpbnVlCitQQVNTOiBSZXNwb25zZSBkYXRhOiAneyJhbHBoYSI6ImJl
dGEiLCJnYW1tYSI6MTIzNDV9JworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogcmVxdWVzdEludGVy
Y2VwdGVkLmludGVyY2VwdFdpdGhSZXF1ZXN0CitQQVNTOiB0ZXh0OiBpbnRlcmNlcHRlZCByZXF1
ZXN0CisKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNl
cHRXaXRoUmVzcG9uc2UKK1BBU1M6IHRleHQ6IGludGVyY2VwdGVkIGRhdGEKK1BBU1M6IHN0YXR1
czogMjAwCitQQVNTOiBzdGF0dXNUZXh0OiBPSworUEFTUzogbWltZVR5cGU6IGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQorUEFTUzogbXktaGVhZGVyOiBteS12YWx1ZQorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXNwb25zZVdpdGhFcnJv
cgorUEFTUzogUmVxdWVzdCBlcnJvcjogJ1JlcXVlc3QgY2FuY2VsZWQnCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiB0ZWFyRG93bgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTY4NDg0YWQ3NTgyZmE5
MmE1ZjI0OWJkMGY3ODJiOTZjNjU1YmI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbApAQCAtMCwwICsxLDE3NyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90
b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGZldGNo
RGF0YSgpIHsKKyAgICB0cnkgeworICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNo
KCdyZXNvdXJjZXMvZGF0YS5qc29uJyk7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0
ZXh0OiBhd2FpdCByZXNwb25zZS50ZXh0KCksCisgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNl
LnN0YXR1cywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsCisg
ICAgICAgICAgICBtaW1lVHlwZTogcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScp
LAorICAgICAgICAgICAgaGVhZGVyOiByZXNwb25zZS5oZWFkZXJzLmdldCgnbXktaGVhZGVyJykK
KyAgICAgICAgfTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiBlLm1lc3NhZ2U7
CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBQ
cm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5zZXRJbnRlcmNlcHRpb25FbmFi
bGVkIik7CisKKyAgICBjb25zdCBbLCAsIHtyZXN1bHR9XSA9IGF3YWl0IFByb21pc2UuYWxsKFsK
KyAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1l
LmVuYWJsZSIsIHBhcmFtczoge319KSwKKyAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRD
b21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmVuYWJsZSIsIHBhcmFtczoge319KSwKKyAgICAgICAg
SW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRl
IiwgcGFyYW1zOiB7CisgICAgICAgICAgICBleHByZXNzaW9uOiAiZG9jdW1lbnQuVVJMIgorICAg
ICAgICB9fSksCisgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9k
OiAiTmV0d29yay5zZXRJbnRlcmNlcHRpb25FbmFibGVkIiwgcGFyYW1zOiB7CisgICAgICAgICAg
ICBlbmFibGVkOiB0cnVlCisgICAgICAgIH19KSwKKyAgICBdKTsKKworICAgIGNvbnN0IGJhc2VV
UkwgPSByZXN1bHQudmFsdWUuc3Vic3RyaW5nKDAsIHJlc3VsdC52YWx1ZS5sYXN0SW5kZXhPZigi
LyIpKTsKKyAgICBjb25zdCB1cmwgPSBiYXNlVVJMICsgIi9yZXNvdXJjZXMvZGF0YS5qc29uIjsK
KyAgICBhd2FpdCBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdv
cmsuYWRkSW50ZXJjZXB0aW9uIiwgcGFyYW1zOiB7IHVybCwgc3RhZ2U6ICJyZXF1ZXN0IiB9fSk7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJyZXF1ZXN0SW50ZXJj
ZXB0ZWQuaW50ZXJjZXB0Q29udGludWUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgY29u
dGludWUgaW50ZXJjZXB0ZWQgcmVxdWVzdC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAg
ICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAgICBjb25z
dCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2Uu
YWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21l
dGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAg
ZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIgorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVx
dWVzdEludGVyY2VwdGVkIn0pCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgLy8gTGV0
IHRoZSBsb2FkIGNvbnRpbnVlLgorICAgICAgICAgICAgY29uc3QgWyBmZXRjaFJlc3VsdCBdID0g
YXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3
YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAg
ICAgICAgICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVz
dWx0Lm9iamVjdElkLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlCisg
ICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3
YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIsIHBhcmFtczog
eworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1z
LnJlcXVlc3RJZAorICAgICAgICAgICAgICAgIH19KQorICAgICAgICAgICAgXSk7CisgICAgICAg
ICAgICBQcm90b2NvbFRlc3QucGFzcygiUmVzcG9uc2UgZGF0YTogJyIgKyBmZXRjaFJlc3VsdC5y
ZXN1bHQudmFsdWUudGV4dC50cmltKCkgKyAiJyIpOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJyZXF1ZXN0SW50ZXJjZXB0ZWQu
aW50ZXJjZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZnVsZmls
bCBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggcmVzcG9uc2UuIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAg
ICAgICAgY29uc3QgW2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0gPSBhd2Fp
dCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRD
b21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAg
ICAgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoKSIKKyAgICAgICAgICAgICAgICB9fSks
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZlbnQ6ICJO
ZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KQorICAgICAgICAgICAgXSk7CisKKyAgICAgICAg
ICAgIC8vIEZ1bGZpbGwgdGhlIHJlcXVlc3Qgd2l0aCBkYXRhLgorICAgICAgICAgICAgY29uc3Qg
W2ZldGNoUmVzdWx0XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdhaXRQcm9taXNl
IiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VPYmplY3RJZDogZmV0Y2hS
ZXN1bHRQcm9taXNlLnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
QnlWYWx1ZTogdHJ1ZQorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3QiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRl
cmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHVybDog
dXJsLnJlcGxhY2UoJ2RhdGEuanNvbicsICdkYXRhMi5qc29uJyksCisgICAgICAgICAgICAgICAg
fX0pCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJ0ZXh0
OiAiICsgZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlLnRleHQpOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJyZXF1ZXN0SW50ZXJj
ZXB0ZWQuaW50ZXJjZXB0V2l0aFJlc3BvbnNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
IGZ1bGZpbGwgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHJlc3BvbnNlLiIsCisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5kIGludGVyY2VwdCBpdC4K
KyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRd
ID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29s
LmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAg
ICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiCisgICAgICAgICAgICAg
ICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQoe2V2
ZW50OiAiTmV0d29yay5yZXF1ZXN0SW50ZXJjZXB0ZWQifSkKKyAgICAgICAgICAgIF0pOworCisg
ICAgICAgICAgICAvLyBGdWxmaWxsIHRoZSByZXF1ZXN0IHdpdGggZGF0YS4KKyAgICAgICAgICAg
IGNvbnN0IFtmZXRjaFJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmF3YWl0
UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlT2JqZWN0SWQ6
IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAgICAgICAgICAg
IHJldHVybkJ5VmFsdWU6IHRydWUKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVy
Y2VwdFdpdGhSZXNwb25zZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1zLnJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisg
ICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgIm15LWhlYWRlciI6ICJteS12YWx1ZSIgfSwK
KyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0i
LAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBidG9hKCJpbnRlcmNlcHRlZCBkYXRhIiks
CisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IHRydWUKKyAgICAgICAgICAgICAg
ICB9fSkKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgcHJpbnRGZXRjaFJlc3VsdChmZXRj
aFJlc3VsdC5yZXN1bHQudmFsdWUpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJyZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0
V2l0aFJlc3BvbnNlV2l0aEVycm9yIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGFib3J0
IGludGVyY2VwdGVkIHJlcXVlc3Qgd2l0aCBlcnJvci4iLAorICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAg
ICBjb25zdCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFBy
b21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1h
bmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAg
ICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIgorICAgICAgICAgICAgICAgIH19KSwKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdv
cmsucmVxdWVzdEludGVyY2VwdGVkIn0pCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAg
Ly8gQWJvcnQgdGhlIHJlcXVlc3QgYXMgY2FuY2VsZWQuCisgICAgICAgICAgICBjb25zdCBbZmV0
Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBw
YXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3Vs
dFByb21pc2UucmVzdWx0Lm9iamVjdElkLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZh
bHVlOiB0cnVlCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3Rv
clByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVz
cG9uc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRlcmNl
cHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIGVycm9yVHlw
ZTogIkNhbmNlbGxhdGlvbiIKKyAgICAgICAgICAgICAgICB9fSkKKyAgICAgICAgICAgIF0pOwor
ICAgICAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoIlJlcXVlc3QgZXJyb3I6ICciICsgZmV0Y2hS
ZXN1bHQucmVzdWx0LnZhbHVlICsgIiciKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAidGVhckRvd24iLAorICAgICAgICBhc3lu
YyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21t
YW5kKHttZXRob2Q6ICJOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlvbiIsIHBhcmFtczogeyB1cmws
IHN0YWdlOiAicmVxdWVzdCIgfX0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKKworICAgIGZ1bmN0aW9uIHByaW50RmV0Y2hSZXN1bHQo
cmVzdWx0KQorICAgIHsKKyAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoInRleHQ6ICIgKyByZXN1
bHQudGV4dCk7CisgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJzdGF0dXM6ICIgKyByZXN1bHQu
c3RhdHVzKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoInN0YXR1c1RleHQ6ICIgKyByZXN1
bHQuc3RhdHVzVGV4dCk7CisgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJtaW1lVHlwZTogIiAr
IHJlc3VsdC5taW1lVHlwZSk7CisgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJteS1oZWFkZXI6
ICIgKyByZXN1bHQuaGVhZGVyKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24uPC9wPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2RhdGEyLmpzb24gYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvZGF0YTIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODZjYTQ5NGMxZGYzOTZiM2Q5ODIxN2Mx
MzhmYjcxNTg4MWYzMmE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL2RhdGEyLmpzb24KQEAgLTAsMCArMSBAQAoraW50ZXJjZXB0ZWQg
cmVxdWVzdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399243</attachid>
            <date>2020-05-12 22:51:51 -0700</date>
            <delta_ts>2020-05-14 15:57:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200512225150.patch</filename>
            <type>text/plain</type>
            <size>55602</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTk5NDI3ZDM3MjJjZWNkZDk3YTYxMDkzNGJjODUzZGQ2MGNlNGM2Li5kYzU3ZDM3ZTkwZDU1Y2M5
ZDNkYWQxOGZjMjE5YzdjMmJmZmM1MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3Qg
aW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0
IGFkZHMgTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAg
ICAgICBjYW4gYmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFn
ZSBlbnVtIGNhbiBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFs
dWVzLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAy
MC0wNS0xMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAg
ICAgRml4IGV4aXN0aW5nIHVzYWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlNDIGFu
ZCBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA2YTNmNDc4MWFmNjI1ZGY1YTg4OWJiOWJhODkxYmIwZmMxN2E4
NjFhLi5jNjFhZTM0NmQzY2Q4ODEzMDYyNWQzOTY4Nzc5NDljZmUxM2I0OWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDQgQEAKKzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxk
bWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVz
dCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayBy
ZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAgcHJvdG9jb2wgZG9t
YWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRo
YXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3
b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9u
c2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEludGVyY2VwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1
ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpc2FibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRp
bmdSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNl
dEludGVyY2VwdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjphZGRJbnRlcmNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpyZW1vdmVJbnRlcmNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTmV0d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRBc0Vycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJl
c3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmVsb2FkKToKKwogMjAyMC0wNS0xMiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBQb3N0ZXIgc2V0IGFmdGVyIHBsYXliYWNrIGJlZ2lucyBzaG91bGQg
YmUgaWdub3JlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNWExZmE5YWI0YjU4OThmNDFjNzk2OTZmNzdiMTRmNjAz
MDg1OWJiLi4xYWYwMWI4ZWRhNjdjODQxYjAwZmJkNWI0MTI5OGQ1YjA3YzNiNTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAyLTI5ICBQYXZlbCBGZWxkbWFuICA8cGF2ZWwuZmVs
ZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVl
c3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc0NDYKKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsg
cmVxdWVzdCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRv
bWFpbi4gSXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0
aGF0CisgICAgICAgIGNhbiBiZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0
d29ya1N0YWdlIGVudW0gY2FuIG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3Bv
bnNlJyB2YWx1ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkKToKKwogMjAyMC0wNS0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gUmV3b3JrIGRyYWcgYW5kIGRyb3AgaGFuZGxpbmcgaW4g
cHJlcGFyYXRpb24gZm9yIEdUSzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KaW5kZXggNzc3YTU0MTY2ZWQ2NjY0NTYxYjNm
ODI0OWE2YWJiNGFjNTlkMDQ4MC4uYTE2NzcwYmFjNDU2NWMwNDU5ZjExZDRiMjMyMWI1OTg1NDdl
MjhkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9OZXR3b3JrLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9OZXR3b3JrLmpzb24KQEAgLTE1NSw3ICsxNTUsMTMgQEAKICAgICAgICAgICAgICJpZCI6
ICJOZXR3b3JrU3RhZ2UiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29yayByZXF1ZXN0
LiIsCi0gICAgICAgICAgICAiZW51bSI6IFsicmVzcG9uc2UiXQorICAgICAgICAgICAgImVudW0i
OiBbInJlcXVlc3QiLCAicmVzcG9uc2UiXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICAiaWQiOiAiUmVzb3VyY2VFcnJvclR5cGUiLAorICAgICAgICAgICAgInR5cGUiOiAic3Ry
aW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEg
bmV0d29yayByZXF1ZXN0LiIsCisgICAgICAgICAgICAiZW51bSI6IFsiR2VuZXJhbCIsICJBY2Nl
c3NDb250cm9sIiwgIkNhbmNlbGxhdGlvbiIsICJUaW1lb3V0Il0KICAgICAgICAgfQogICAgIF0s
CiAgICAgImNvbW1hbmRzIjogWwpAQCAtMjM4LDcgKzI0NCw3IEBACiAgICAgICAgICAgICAibmFt
ZSI6ICJhZGRJbnRlcmNlcHRpb24iLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFkZCBh
biBpbnRlcmNlcHRpb24uIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVS
TCBwYXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcgaWYgbm90IHNwZWNp
ZmllZCBvciBlbXB0eSIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhc2VTZW5zaXRp
dmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBjYXNpbmcgb2YgYHVybGAgcGFyYW1ldGVyLiIgfSwK
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBw
YXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIiB9LAogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHByZXNlbnQgdGhpcyBhcHBsaWVzIHRvIGFsbCBuZXR3
b3JrIHN0YWdlcy4iIH0KQEAgLTI1NiwyMiArMjYyLDM0IEBACiAgICAgICAgIH0sCiAgICAgICAg
IHsKICAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdENvbnRpbnVlIiwKLSAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJDb250aW51ZSBhbiBpbnRlcmNlcHRpb24gd2l0aCBubyBtb2RpZmlj
YXRpb25zLiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udGludWUgcmVxdWVzdCBv
ciByZXNwb25zZSB3aXRob3V0IG1vZGlmaWNhdGlvbnMuIiwKICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAi
UmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRl
ZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9CiAgICAgICAgICAg
ICBdCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2Vw
dFdpdGhSZXF1ZXN0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYWNlIGludGVy
Y2VwdGVkIHJlcXVlc3Qgd2l0aCB0aGUgcHJvdmlkZWQgb25lLiIsCisgICAgICAgICAgICAicGFy
YW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVm
IjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJj
ZXB0ZWQgTmV0d29yayByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIm1ldGhvZCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25h
bCI6IHRydWUsImRlc2NyaXB0aW9uIjogIkhUVFAgcmVxdWVzdCBtZXRob2QuIiB9LAorICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBv
cmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJwb3N0RGF0YSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJIVFRQIFBPU1QgcmVxdWVzdCBkYXRhLCBiYXNlNjQtZW5jb2RlZC4iIH0KKyAg
ICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAi
aW50ZXJjZXB0V2l0aFJlc3BvbnNlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm92
aWRlIHJlc3BvbnNlIGNvbnRlbnQgZm9yIGFuIGludGVyY2VwdGVkIHJlc3BvbnNlLiIsCiAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVl
c3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZv
ciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXNwb25zZSB0byBtb2RpZnkuIiB9LAotICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBlIjogInN0cmluZyIgfSwKLSAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2NEVuY29kZWQiLCAidHlwZSI6ICJib29sZWFuIiwg
ImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNvbnRlbnQgd2FzIHNlbnQgYXMgYmFzZTY0LiIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJzdHJpbmciLCAi
b3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJiYXNlNjRFbmNv
ZGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJUcnVlLCBpZiBjb250ZW50IHdhcyBzZW50IGFzIGJhc2U2NC4iIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJtaW1lVHlwZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJNSU1FIFR5cGUgZm9yIHRoZSBkYXRhLiIgfSwKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInN0YXR1cyIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZS4gUGFzcyB0
aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInN0YXR1c1RleHQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgdGV4dC4gUGFzcyB0aHJv
dWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKLSAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdp
bmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
aGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVz
IGlmIHVubW9kaWZpZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JUeXBl
IiwgIiRyZWYiOiAiUmVzb3VyY2VFcnJvclR5cGUiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiRGVsaXZlciBlcnJvciByZWFzb24gZm9yIHRoZSByZXF1ZXN0IGZhaWx1cmUuIiB9
CiAgICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICBdLApAQCAtMzQ4LDkgKzM2NiwxNyBAQAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNoZWRSZXNv
dXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAgICAgICAg
ICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVz
dEludGVyY2VwdGVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhU
VFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3QgcmVzcG9u
ZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+LCA8Y29kZT5OZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9jb2RlPmAgb3IgPGNvZGU+TmV0d29yay5pbnRlcmNl
cHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byByZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAorICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0
SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3Ig
dGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxpZXIgPGNv
ZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVmIjogIlJlcXVlc3QiLCAiZGVzY3JpcHRpb24iOiAi
T3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlzIGlzIGNv
bnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAg
ICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRlcmNlcHRlZCIsCi0gICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29u
dGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8L2NvZGU+
YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBUaGUgZnJv
bnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8
L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2RlPmAgdG8g
Y29udGludWUgdGhpcyByZXNwb25zZS4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQi
LCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3Jr
LiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxpZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJl
U2VudDwvY29kZT4uIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzcG9uc2UiLCAi
JHJlZiI6ICJSZXNwb25zZSIsICJkZXNjcmlwdGlvbiI6ICJPcmlnaW5hbCByZXNwb25zZSBjb250
ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlzIGlzIGNvbnRpbnVlZC4iIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggMGM0NDJlZTkwODg3N2QyMDY3ZDY1ZTg3NDQxNjUyYThjZjAwYzg4ZS4uZDEwYjMyNTUx
M2UyYWNhMDZiN2EzN2E4NTcwODZhYTEyYmFkYzY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTgxMCwxMCAr
ODEwLDE3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hl
ZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSYgY2FjCiAgICAgfQogfQogCi1ib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCi0gICAgICAgIHJldHVybiBuZXR3
b3JrQWdlbnQtPndpbGxJbnRlcmNlcHRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm4g
bmV0d29ya0FnZW50LT53aWxsSW50ZXJjZXB0KHJlcXVlc3QpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVl
c3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgcmV0
dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNCw2ICs4MzEsMTIgQEAgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0
d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkK
KyAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZSho
YW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXgg
MDNiZGQ1NWNjOTMwZGUwY2ZjNjFmOGQ5ZTQyMTBmNDk1MmFhNDYzMy4uNWY2OWEyYzdlZWEzNGUy
ZWEwODI0YjkxYzRiY2U0Njg0ZWQ5MmJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDUsNiArNDUsNyBAQAogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25QdWJsaWMuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIldvcmtlckluc3BlY3RvclByb3h5LmgiCkBAIC0yMzIsOCArMjMzLDEwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZShQYWdlJiwg
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVy
Y2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBz
dGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMgdm9p
ZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtNDM3LDggKzQ0MCwxMCBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERl
c3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBi
b29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNw
b25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNz
YWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTEyNDksMTEgKzEyNTQsMTkgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
KENhY2hlZFJlc291cmNlJgogICAgIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKGNhY2hl
ZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEludGVyY2VwdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlm
IChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1l
KGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0SW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvblB1YmxpYzo6aGFzRnJvbnRl
bmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJl
cXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTEyNjUsNiArMTI3OCwxMyBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGZy
YW1lLCByZXF1ZXN0KSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUobG9hZGVyLmZyYW1lKCkpKQorICAgICAgICBpbnRlcmNl
cHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNl
cHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA5
NTRhYWYxMjFhOWZhNTA3ZDgzYmMxMGFlMzdkZTFmMTI4ZjdkY2ZjLi40MDY2OGExY2I2OWZiNzc0
MTZmODI3NmQ5ZGRkMDE5ODhlNWQwYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtMzAs
MTEgKzMwLDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChjb25zdCBG
cmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1
cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGZyYW1l
LCByZXF1ZXN0KTsKK30KKwogYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNo
b3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpOwogfQog
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdElu
dGVybmFsKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30K
Kwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNl
SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikK
IHsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGZyYW1l
LCByZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
LmgKaW5kZXggYjY3ZTg5YjgwYjRlN2E4NTg2Y2FjODFhZGU1ZDU4YTFiY2IwZDQzMS4uNTQzZjVi
MDMzNWMxZWQ2ZGQzYzc2NWJiMzFmODExM2MzNDcwNjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaApA
QCAtMzYsMTQgKzM2LDI3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0IHsKIHB1YmxpYzoKKyAgICBzdGF0
aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50
ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUlu
dGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYpOwogICAgIHN0YXRpYyB2
b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwog
fTsKIAoraW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNob3Vs
ZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCgqZnJhbWUsIHJlcXVlc3QpOworfQorCiBpbmxpbmUg
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKQEAgLTUzLDYgKzY2
LDEyIEBAIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqCiAgICAgcmV0dXJuIHNob3VsZEludGVyY2Vw
dFJlc3BvbnNlSW50ZXJuYWwoKmZyYW1lLCByZXNwb25zZSk7CiB9CiAKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCopPiYmIGhhbmRsZXIpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVl
c3QoKSkpOworICAgIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChsb2FkZXIsIFdURk1vdmUoaGFu
ZGxlcikpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggYWZjZGQyYTdmYWZmZTBiZWM5ODIwNzJkODk0YmM4NWM2ZTMwYzQ0Yy4uZGU5MmZj
Njg5ZWU5YThjMjBiZDA2Mzc1ZjQ5ODFkMDJkMzEwNzRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApA
QCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNs
dWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCkBAIC04NDEsMTIgKzg0MiwxMyBAQCB2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5jbGVhcigpOwogICAgIG1fZXh0cmFSZXF1ZXN0SGVhZGVycy5jbGVhcigp
OwogCisgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICBjb250aW51ZVBlbmRpbmdS
ZXNwb25zZXMoKTsKIAogICAgIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGZhbHNlKTsKIH0K
IAotYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQor
Ym9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsLCBOZXR3
b3JrU3RhZ2UgbmV0d29ya1N0YWdlKQogewogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKTsKIApAQCAtODU1LDYgKzg1NywxMCBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZv
ciAoYXV0byYgaW50ZXJjZXB0IDogbV9pbnRlcmNlcHRzKSB7CisgICAgICAgIGlmIChpbnRlcmNl
cHQubmV0d29ya1N0YWdlICE9IG5ldHdvcmtTdGFnZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAoaW50ZXJjZXB0LnVybC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgYXV0byBzZWFyY2hTdHJpbmdUeXBlID0gaW50ZXJjZXB0LmlzUmVnZXgg
PyBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpSZWdleCA6IENvbnRl
bnRTZWFyY2hVdGlsaXRpZXM6OlNlYXJjaFN0cmluZ1R5cGU6OkV4YWN0U3RyaW5nOwogICAgICAg
ICBhdXRvIHJlZ2V4ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6Y3JlYXRlUmVndWxhckV4cHJl
c3Npb25Gb3JTZWFyY2hTdHJpbmcoaW50ZXJjZXB0LnVybCwgaW50ZXJjZXB0LmNhc2VTZW5zaXRp
dmUsIHNlYXJjaFN0cmluZ1R5cGUpOwogICAgICAgICBpZiAocmVnZXgubWF0Y2godXJsU3RyaW5n
KSAhPSAtMSkKQEAgLTg2NCw2ICs4NzAsMTYgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCkKK3sKKyAgICBm
b3IgKGF1dG8mIHBlbmRpbmdSZXF1ZXN0IDogbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudmFs
dWVzKCkpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0
LT5tX2xvYWRlci5nZXQoKTsKKyAgICAgICAgaWYgKGxvYWRlci0+aWRlbnRpZmllcigpKQorICAg
ICAgICAgICAgcGVuZGluZ1JlcXVlc3QtPm1fY29tcGxldGlvbkhhbmRsZXIoJmxvYWRlci0+cmVx
dWVzdCgpKTsKKyAgICB9CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsK
K30KKwogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNl
cygpCiB7CiAgICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI5LDYyICsxMDQ1LDY4IEBAIHZv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFi
bGVkOwogCi0gICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVy
Y2VwdGlvbkVuYWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAg
ICAgICAgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0
cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9u
YWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmlu
Zyogb3B0aW9uYWxOZXR3b3JrU3RhZ2VTdHJpbmcpCiB7Ci0gICAgaWYgKG5ldHdvcmtTdGFnZVN0
cmluZykgewotICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAg
ICAgICBpZiAoIW5ldHdvcmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtl
U3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0YWdlU3RyaW5nKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQogICAgIEludGVyY2VwdCBp
bnRlcmNlcHQ7CiAgICAgaW50ZXJjZXB0LnVybCA9IHVybDsKICAgICBpZiAob3B0aW9uYWxDYXNl
U2Vuc2l0aXZlKQogICAgICAgICBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSA9ICpvcHRpb25hbENh
c2VTZW5zaXRpdmU7CiAgICAgaWYgKG9wdGlvbmFsSXNSZWdleCkKICAgICAgICAgaW50ZXJjZXB0
LmlzUmVnZXggPSAqb3B0aW9uYWxJc1JlZ2V4OwotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgaW50
ZXJjZXB0aW5nIHJlcXVlc3RzLgorICAgIGlmIChvcHRpb25hbE5ldHdvcmtTdGFnZVN0cmluZykg
eworICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3Bl
Y3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpvcHRpb25hbE5ldHdvcmtTdGFnZVN0cmluZyk7Cisg
ICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9IG1h
a2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpvcHRpb25hbE5ldHdvcmtTdGFn
ZVN0cmluZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJj
ZXB0Lm5ldHdvcmtTdGFnZSA9ICpuZXR3b3JrU3RhZ2U7CisgICAgfQogCiAgICAgaWYgKCFtX2lu
dGVyY2VwdHMuYXBwZW5kSWZOb3RDb250YWlucyhpbnRlcmNlcHQpKQogICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnRlcmNlcHQgZm9yIGdpdmVuIHVybCBhbmQgZ2l2ZW4gaXNSZWdleCBhbHJlYWR5
IGV4aXN0cyJfczsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVy
Y2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdl
eCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpCit2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTmV0d29ya1N0YWdl
U3RyaW5nKQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBu
ZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29y
a1N0YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2Up
IHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3Jr
U3RhZ2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0KICAgICBJbnRlcmNlcHQgaW50ZXJjZXB0OwogICAgIGludGVyY2Vw
dC51cmwgPSB1cmw7CiAgICAgaWYgKG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSkKICAgICAgICAgaW50
ZXJjZXB0LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChv
cHRpb25hbElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNS
ZWdleDsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAg
ICBpZiAob3B0aW9uYWxOZXR3b3JrU3RhZ2VTdHJpbmcpIHsKKyAgICAgICAgYXV0byBuZXR3b3Jr
U3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdl
Pigqb3B0aW9uYWxOZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICBpZiAoIW5ldHdvcmtTdGFn
ZSkgeworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdv
cmtTdGFnZTogIl9zLCAqb3B0aW9uYWxOZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGludGVyY2VwdC5uZXR3b3JrU3RhZ2UgPSAqbmV0
d29ya1N0YWdlOworICAgIH0KIAogICAgIGlmICghbV9pbnRlcmNlcHRzLnJlbW92ZUFsbChpbnRl
cmNlcHQpKQogICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIGludGVyY2VwdCBmb3IgZ2l2
ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4Il9zOwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVl
c3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCkgfHwgc2hvdWxkSW50ZXJjZXB0KHJlcXVl
c3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UpOworfQorCitib29sIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSk7
CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6
OlJlcXVlc3QpOwogfQogCiBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkyLDcg
KzExMTQsMTggQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0
aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZElu
dGVyY2VwdChyZXNwb25zZS51cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNw
b25zZS51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikK
K3sKKyAgICBBU1NFUlQobV9lbmFibGVkKTsKKyAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFi
bGVkKTsKKworICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVl
c3RJZChsb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbWFr
ZVVuaXF1ZTxQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdD4oJmxvYWRlciwgV1RGTW92ZShoYW5kbGVy
KSk7CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuc2V0KHJlcXVlc3RJZCwgV1RGTW92
ZShwZW5kaW5nUmVxdWVzdCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0SW50
ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChsb2FkZXIu
cmVxdWVzdCgpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKQEAgLTExMTQsMTcgKzExNDcsMTQw
IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQpCiB7CisgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCA9IG1fcGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAgICBpZiAocGVuZGluZ0lu
dGVyY2VwdFJlcXVlc3QpIHsKKyAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlcXVlc3QtPm1fY29t
cGxldGlvbkhhbmRsZXIoJnBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0LT5tX2xvYWRlci0+cmVxdWVz
dCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1dG8gcGVuZGluZ0ludGVyY2Vw
dFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRha2UocmVxdWVzdElkKTsK
LSAgICBpZiAoIXBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSkgewotICAgICAgICBlcnJvclN0cmlu
ZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZvciBnaXZlbiByZXF1ZXN0
SWQiX3M7CisgICAgaWYgKHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSkgeworICAgICAgICBwZW5k
aW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5n
IGludGVyY2VwdCByZXF1ZXN0IG9yIHJlc3BvbnNlIGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVxdWVzdChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcqIG1ldGhvZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVy
cywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0g
bV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlmIChwZW5k
aW5nUmVxdWVzdCkgeworICAgICAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcGVuZGluZ1Jl
cXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAgICBpZiAoIWxvYWRlci0+aWRlbnRpZmllcigp
KSB7CisgICAgICAgICAgICAvLyBEbyBub3QgdGhyb3cgdXBvbiBjb250aW51ZSBvZiBjYW5jZWxl
ZCByZXF1ZXN0cy4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBT
YWZlIHRvIGNvbnN0IGNhc3QgYXQgdGhpcyBwb2ludCwgd2UgYXJlIG9ubHkgYWRqdXN0aW5nIHRo
ZSBtZXRob2QgLyBoZWFkZXJzIC8gcG9zdC4KKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QgPSBsb2FkZXItPnJlcXVlc3QoKTsKKyAgICAgICAgaWYgKHVybCkKKyAgICAgICAgICAgIHJl
cXVlc3Quc2V0VVJMKFVSTCh7IH0sICp1cmwpKTsKKyAgICAgICAgaWYgKG1ldGhvZCkKKyAgICAg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgqbWV0aG9kKTsKKyAgICAgICAgaWYgKGhlYWRl
cnMpIHsKKyAgICAgICAgICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOworICAgICAg
ICAgICAgZm9yIChhdXRvJiBoZWFkZXIgOiAqaGVhZGVycykgeworICAgICAgICAgICAgICAgIFN0
cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAoaGVhZGVyLnZhbHVlLT5hc1N0
cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0SGVhZGVycy5h
ZGQoaGVhZGVyLmtleSwgaGVhZGVyVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHBvc3REYXRhKSB7CisgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOworICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKnBvc3REYXRhLCBi
dWZmZXIpKSB7CisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRlY29k
ZSBnaXZlbiBwb3N0RGF0YSJfczsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBSZWY8Rm9ybURhdGE+IGRhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKGJ1
ZmZlcik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZGF0YSkpOwor
ICAgICAgICB9CisgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5tX2NvbXBsZXRpb25IYW5kbGVyKCZy
ZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAgZXJyb3JTdHJpbmcg
PSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQi
X3M7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9u
c2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWlt
ZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0
IEpTT046Ok9iamVjdCogaGVhZGVycykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nKiBjb250ZW50LCBjb25zdCBib29sKiBiYXNlNjRFbmNv
ZGVkLCBjb25zdCBTdHJpbmcqIG1pbWVUeXBlLCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3Ry
aW5nKiBzdGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyogZXJyb3JUeXBlU3RyaW5nKQogeworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRp
bmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7CisgICAgaWYgKHBlbmRpbmdSZXF1
ZXN0ICYmIGVycm9yVHlwZVN0cmluZykgeworICAgICAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVy
ID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAgICBpZiAoIWxvYWRlci0+
aWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gYWJv
cnQgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQiX3M7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXV0byBlcnJvclR5cGUgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU+KCplcnJvclR5cGVT
dHJpbmcpOworICAgICAgICBpZiAoIWVycm9yVHlwZSkgeworICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiVW5rbm93biBlcnJvciB0eXBlIl9zOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgICAgIHN3aXRjaCAoZXJyb3JU
eXBlLnZhbHVlKCkpIHsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpSZXNvdXJjZUVycm9yVHlwZTo6R2VuZXJhbDoKKyAgICAgICAgICAgIGVycm9yID0gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAiUmVx
dWVzdCBpbnRlcmNlcHRlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNzQ29udHJvbDoKKyAgICAgICAgICAgIGVycm9yID0g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgp
LCAiQWNjZXNzIGRlbmllZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6Q2FuY2VsbGF0aW9uOgorICAgICAgICAgICAgZXJy
b3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+
dXJsKCksICJSZXF1ZXN0IGNhbmNlbGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxs
YXRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OlRpbWVvdXQ6CisgICAgICAgICAgICBl
cnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVy
LT51cmwoKSwgIlJlcXVlc3QgdGltZWQgb3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1l
b3V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgbG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKKyAgICAgICAgcGVuZGluZ1JlcXVlc3QtPm1f
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKHBlbmRpbmdSZXF1ZXN0ICYmICghc3RhdHVzIHx8ICFzdGF0dXNUZXh0IHx8ICFtaW1lVHlw
ZSB8fCAhaGVhZGVycykpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAic3RhdHVzLCBzdGF0dXNU
ZXh0LCBtaW1lVHlwZSBhbmQgaGVhZGVycyBtdXN0IGJlIHNwZWNpZmllZCB3aGVuIGZ1bGZpbGxp
bmcgaW50ZXJjZXB0ZWQgcmVxdWVzdCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAocGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBsb2Fk
ZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgICAgIGlmICghbG9hZGVy
LT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBm
dWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGE7CisgICAgICAgIGlmIChiYXNlNjRFbmNvZGVkICYmICpiYXNlNjRFbmNvZGVkICYmIGNvbnRl
bnQpIHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgICAgICAgICBp
ZiAoIWJhc2U2NERlY29kZSgqY29udGVudCwgYnVmZmVyKSkgeworICAgICAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gY29udGVudCJfczsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgfSBlbHNlIGlmIChjb250
ZW50KQorICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQtPnV0
ZjgoKS5kYXRhKCksIGNvbnRlbnQtPnV0ZjgoKS5sZW5ndGgoKSk7CisKKyAgICAgICAgLy8gTWlt
aWMgZGF0YSBVUkwgbG9hZCBiZWhhdmlvciAtIHJlcG9ydCBkaWRSZWNlaXZlUmVzcG9uc2UgJiBk
aWRGaW5pc2hMb2FkaW5nLgorICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHBlbmRp
bmdSZXF1ZXN0LT5tX2xvYWRlci0+dXJsKCksICptaW1lVHlwZSwgZGF0YS0+c2l6ZSgpLCBTdHJp
bmcoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3Vy
Y2U6Okluc3BlY3Rvck92ZXJyaWRlKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0Nv
ZGUoKnN0YXR1cyk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KCpzdGF0dXNU
ZXh0KTsKKyAgICAgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAgICAgIGZv
ciAoYXV0byYgaGVhZGVyIDogKmhlYWRlcnMpIHsKKyAgICAgICAgICAgIFN0cmluZyBoZWFkZXJW
YWx1ZTsKKyAgICAgICAgICAgIGlmIChoZWFkZXIudmFsdWUtPmFzU3RyaW5nKGhlYWRlclZhbHVl
KSkKKyAgICAgICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRkKGhlYWRlci5rZXksIGhlYWRl
clZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGRz
KFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkp
OworICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW2xvYWRlciwg
ZGF0YSA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
IChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVy
KFdURk1vdmUoZGF0YSksIGRhdGEtPnNpemUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsK
KyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3Mo
KSk7CisgICAgICAgIH0pOworICAgICAgICBwZW5kaW5nUmVxdWVzdC0+bV9jb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1dG8gcGVuZGlu
Z0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRha2UocmVx
dWVzdElkKTsKICAgICBpZiAoIXBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSkgewogICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZvciBnaXZl
biByZXF1ZXN0SWQiX3M7CkBAIC0xMTUyLDE2ICsxMzA4LDE2IEBAIHZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zCiAgICAgfQogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOwot
ICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CisgICAgaWYgKGJhc2U2NEVuY29kZWQgJiYgKmJhc2U2
NEVuY29kZWQgJiYgY29udGVudCkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwot
ICAgICAgICBpZiAoIWJhc2U2NERlY29kZShjb250ZW50LCBidWZmZXIpKSB7CisgICAgICAgIGlm
ICghYmFzZTY0RGVjb2RlKCpjb250ZW50LCBidWZmZXIpKSB7CiAgICAgICAgICAgICBlcnJvclN0
cmluZyA9ICJVbmFibGUgdG8gZGVjb2RlIGdpdmVuIGNvbnRlbnQiX3M7CiAgICAgICAgICAgICBw
ZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG92ZXJyaWRlRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IG92ZXJyaWRlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQudXRmOCgpLmRhdGEo
KSwgY29udGVudC51dGY4KCkubGVuZ3RoKCkpOworICAgIH0gZWxzZSBpZiAoY29udGVudCkKKyAg
ICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC0+dXRmOCgp
LmRhdGEoKSwgY29udGVudC0+dXRmOCgpLmxlbmd0aCgpKTsKIAogICAgIHBlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZS0+cmVzcG9uZChvdmVycmlkZVJlc3BvbnNlLCBvdmVycmlkZURhdGEpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgKaW5kZXggYmZkMTMxZTliNTg1NmM4NGRhNzcyNDgwNWU3MTM5N2I3Yzc0ODZh
OS4uNTg2NDUyMzQ1NGZhODUzYTI1ZDFlMDhhMTA4MWM5NmM2MTQyMGE1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oCkBAIC05MSw3ICs5MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEludGVyY2VwdGlvbihF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykg
ZmluYWw7CiAgICAgdm9pZCByZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdl
eCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwogICAgIHZvaWQgaW50
ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkgZmlu
YWw7Ci0gICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29k
ZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJp
bmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycykgZmluYWw7CisgICAg
dm9pZCBpbnRlcmNlcHRXaXRoUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcqIG1ldGhvZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpT
T046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkgZmluYWw7CisgICAg
dm9pZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nKiBjb250ZW50LCBjb25zdCBib29sKiBiYXNlNjRFbmNvZGVk
LCBjb25zdCBTdHJpbmcqIG1pbWVUeXBlLCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5n
KiBzdGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyog
ZXJyb3JUeXBlKSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAg
IHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAgLTExOCw5ICsxMTksMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgbWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyJik7CiAgICAgdm9p
ZCBzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1
bGF0aW9uKERvY3VtZW50Jik7Ci0gICAgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAg
ICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3Ro
ZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsK
ICAgICB2b2lkIHNlYXJjaEluUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNS
ZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5
cGVzOjpTZWFyY2hNYXRjaD4+Jik7CkBAIC0xNDAsNyArMTQzLDkgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAKLSAgICBib29s
IHNob3VsZEludGVyY2VwdChVUkwpOworICAgIHVzaW5nIE5ldHdvcmtTdGFnZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZTsKKyAgICBib29sIHNob3VsZEludGVy
Y2VwdChVUkwsIE5ldHdvcmtTdGFnZSk7CisgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXF1ZXN0
cygpOwogICAgIHZvaWQgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAKICAgICBXZWJTb2Nr
ZXQqIHdlYlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CkBAIC0x
NTMsNiArMTU4LDIwIEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAKKyAg
ICBjbGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCB7CisgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdChS
ZXNvdXJjZUxvYWRlciogbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgOiBtX2xvYWRl
cihsb2FkZXIpCisgICAgICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpCisgICAgICAgIHsgfQorCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRS
ZXF1ZXN0KCkgPSBkZWZhdWx0OworICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IG1fbG9h
ZGVyOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCopPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIH07CisKICAgICBjbGFzcyBQZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTIw
NCwxNSArMjIzLDE4IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGJv
b2wgY2FzZVNlbnNpdGl2ZSB7IHRydWUgfTsKICAgICAgICAgYm9vbCBpc1JlZ2V4IHsgZmFsc2Ug
fTsKKyAgICAgICAgTmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSB7IE5ldHdvcmtTdGFnZTo6UmVz
cG9uc2UgfTsKIAogICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVyY2Vw
dCYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1cmwgPT0gb3Ro
ZXIudXJsCiAgICAgICAgICAgICAgICAgJiYgY2FzZVNlbnNpdGl2ZSA9PSBvdGhlci5jYXNlU2Vu
c2l0aXZlCi0gICAgICAgICAgICAgICAgJiYgaXNSZWdleCA9PSBvdGhlci5pc1JlZ2V4OworICAg
ICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdleAorICAgICAgICAgICAgICAg
ICYmIG5ldHdvcmtTdGFnZSA9PSBvdGhlci5uZXR3b3JrU3RhZ2U7CiAgICAgICAgIH0KICAgICB9
OwogICAgIFZlY3RvcjxJbnRlcmNlcHQ+IG1faW50ZXJjZXB0czsKKyAgICBIYXNoTWFwPFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0Pj4gbV9wZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5k
aW5nSW50ZXJjZXB0UmVzcG9uc2U+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXM7CiAKICAg
ICAvLyBGSVhNRTogSW5zcGVjdG9yTmV0d29ya0FnZW50IHNob3VsZCBub3QgYmUgYXdhcmUgb2Yg
c3R5bGUgcmVjYWxjdWxhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDIzMWVkZWM4Y2NjNzFkNjUyMTcxMDYz
NjNmNWNjMzQ5OTBhMTY0N2UuLjY1OWUyZmU4OTA3YjMxNTk3NjYwYTdkZGM0OGI5NDVkMzNmMGY1
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcApAQCAtODQ2LDcgKzg0Niw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
CiAKICAgICByZXF1ZXN0LnVwZGF0ZVJlZmVycmVyUG9saWN5KGRvY3VtZW50KCkgPyBkb2N1bWVu
dCgpLT5yZWZlcnJlclBvbGljeSgpIDogUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93
bmdyYWRlKTsKIAotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHRSZXF1ZXN0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgaWYgKElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdCgmZnJhbWUsIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXF1ZXN0LnNldENhY2hpbmdQb2xpY3koQ2FjaGlu
Z1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKTsKIAogICAgIGF1dG8mIHBhZ2UgPSAqZnJhbWUucGFn
ZSgpOwpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgVmVjdG9yPFJlZjxTVkdJbWFnZT4+IENhY2hlZFJl
c291cmNlTG9hZGVyOjphbGxDYWNoZWRTVkdJbWFnZXMoKSBjb25zdAogCiBSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KQogewotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQor
ICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQoZnJhbWUoKSwg
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgIkluc3BlY3RvciBpbnRlcmNlcHQiX3MgfSk7CiAKICAg
ICBpZiAocmVxdWVzdC5jaGFyc2V0KCkuaXNFbXB0eSgpICYmICh0eXBlID09IENhY2hlZFJlc291
cmNlOjpUeXBlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5
bGVTaGVldCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYjhkY2NhZDJjMmNmOGQwMDAxNDAwNDA3Y2FjYTZl
MjdiMWY4ODI0OS4uMjEwMjM5NGNkZmYzNTYzYzNjMDRjNmM5MjNiYzc2MGY2MWRiNGI0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1M
RnJhbWVPd25lckVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgpAQCAtMjMwLDggKzIzMSwxOCBA
QCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJl
c291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxT
Y2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKSB7CiAgICAg
ICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9h
ZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIik7Ci0gICAg
ICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7
Ci0gICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygp
LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHx8ICFJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QocmVzb3VyY2VMb2FkZXIuZnJh
bWUoKSwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpKSkgeworICAgICAgICAgICAgc2NoZWR1bGVM
b2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1
ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcHJv
dGVjdGVkUmVzb3VyY2VMb2FkZXIgPSAmcmVzb3VyY2VMb2FkZXI7CisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChyZXNvdXJjZUxvYWRlciwg
W3RoaXMsIHByb3RlY3RlZFJlc291cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHJlc291cmNlXShjb25zdCBSZXNv
dXJjZVJlcXVlc3QqIHJlcXVlc3QpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHJlcXVlc3Qp
CisgICAgICAgICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKCpwcm90ZWN0
ZWRSZXNvdXJjZUxvYWRlciwgKnJlcXVlc3QsIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVz
b3VyY2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAg
V0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBV
Ukwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTc4OGE0NWI3NzNkMDI3
MjZlNGJhZjRjZjBlODRjN2Q5NjdhNDAwYi4uOTU0NGM4MmQzMjkwNTBkNGFiMmVhODYyYjhlNjJk
YzhiZDg4ZWVhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAyLTI5ICBQYXZlbCBGZWxk
bWFuICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
aW50cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRy
b2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsKKyAgICAg
ICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qg
bm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3Ig
ZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVl
c3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9u
c2UuaHRtbDoKKwogMjAyMC0wNS0xMiAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBz
b255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dW1dLMV0gcmVxdWVzdEFuaW1hdGlvbkZyYW1l
IGRvZXNuJ3Qgd29yayBzaW5jZSByMjQ0MTgyIGluIEFjY2VsZXJhdGVkIENvbXBvc2l0aW5nIG1v
ZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9wcm90b2NvbC10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL3Byb3RvY29sLXRlc3QuanMKaW5kZXggYTAyNjQ5ZDU2YmRiM2QyODVjMWYwZDdmODAw
Y2ZlNDEwODkyMjY0MS4uODMxYTYxZjY3ODVlNDQ4OGIxMmQ3ZGZkZWYxZmU2NmQzNzU1MTIyMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3By
b3RvY29sLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL3Byb3RvY29sLXRlc3QuanMKQEAgLTg3LDEyICs4NywxNCBAQCBUZXN0UGFnZS5ydW5U
ZXN0ID0gd2luZG93LnJ1blRlc3QgPSBmdW5jdGlvbigpCiAgICAgaWYgKHR5cGVvZiB0ZXN0RnVu
Y3Rpb24gIT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBzZW5kIHRl
c3QoKSBiZWNhdXNlIGl0IGlzIG5vdCBhIGZ1bmN0aW9uLiIpOwogICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGxldCB1cmwgPSB0
ZXN0UnVubmVyLmluc3BlY3RvclRlc3RTdHViVVJMOwogICAgIGlmICghdXJsKSB7CiAgICAgICAg
IGFsZXJ0KCJGYWlsZWQgdG8gb2J0YWluIGluc3BlY3RvciB0ZXN0IHN0dWIgVVJMLiIpOwogICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHJ1bkluaXRpYWxpemF0aW9uTWV0aG9kc0luRnJvbnRlbmQoaW5pdGlhbGl6
ZXJzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMjRjOTZhZDQyODMxMWM1
YjFmMDc1OWZjNmM4ZTc1NmFjNmUxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyMyBAQAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbi4KKworCis9PSBSdW5uaW5nIHRlc3Qg
c3VpdGU6IE5ldHdvcmsuc2V0SW50ZXJjZXB0aW9uRW5hYmxlZAorLS0gUnVubmluZyB0ZXN0IGNh
c2U6IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRDb250aW51ZQorUEFTUzogUmVzcG9uc2Ug
ZGF0YTogJ3siYWxwaGEiOiJiZXRhIiwiZ2FtbWEiOjEyMzQ1fScKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRXaXRoUmVxdWVzdAorUEFTUzogdGV4
dDogaW50ZXJjZXB0ZWQgcmVxdWVzdAorCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiByZXF1ZXN0
SW50ZXJjZXB0ZWQuaW50ZXJjZXB0V2l0aFJlc3BvbnNlCitQQVNTOiB0ZXh0OiBpbnRlcmNlcHRl
ZCBkYXRhCitQQVNTOiBzdGF0dXM6IDIwMAorUEFTUzogc3RhdHVzVGV4dDogT0sKK1BBU1M6IG1p
bWVUeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KK1BBU1M6IG15LWhlYWRlcjogbXktdmFs
dWUKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRX
aXRoUmVzcG9uc2VXaXRoRXJyb3IKK1BBU1M6IFJlcXVlc3QgZXJyb3I6ICdSZXF1ZXN0IGNhbmNl
bGVkJworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogdGVhckRvd24KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2E2ODQ4NGFkNzU4MmZhOTJhNWYyNDliZDBmNzgyYjk2YzY1NWJiNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0
bWwKQEAgLTAsMCArMSwxNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCith
c3luYyBmdW5jdGlvbiBmZXRjaERhdGEoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgY29uc3QgcmVz
cG9uc2UgPSBhd2FpdCBmZXRjaCgncmVzb3VyY2VzL2RhdGEuanNvbicpOworICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgdGV4dDogYXdhaXQgcmVzcG9uc2UudGV4dCgpLAorICAgICAgICAg
ICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiByZXNw
b25zZS5zdGF0dXNUZXh0LAorICAgICAgICAgICAgbWltZVR5cGU6IHJlc3BvbnNlLmhlYWRlcnMu
Z2V0KCdjb250ZW50LXR5cGUnKSwKKyAgICAgICAgICAgIGhlYWRlcjogcmVzcG9uc2UuaGVhZGVy
cy5nZXQoJ215LWhlYWRlcicpCisgICAgICAgIH07CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICByZXR1cm4gZS5tZXNzYWdlOworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgbGV0IHN1aXRlID0gUHJvdG9jb2xUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsu
c2V0SW50ZXJjZXB0aW9uRW5hYmxlZCIpOworCisgICAgY29uc3QgWywgLCB7cmVzdWx0fV0gPSBh
d2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFu
ZCh7bWV0aG9kOiAiUnVudGltZS5lbmFibGUiLCBwYXJhbXM6IHt9fSksCisgICAgICAgIEluc3Bl
Y3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5lbmFibGUiLCBwYXJh
bXM6IHt9fSksCisgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9k
OiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAgZXhwcmVzc2lvbjog
ImRvY3VtZW50LlVSTCIKKyAgICAgICAgfX0pLAorICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5h
d2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuc2V0SW50ZXJjZXB0aW9uRW5hYmxlZCIsIHBh
cmFtczogeworICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZQorICAgICAgICB9fSksCisgICAgXSk7
CisKKyAgICBjb25zdCBiYXNlVVJMID0gcmVzdWx0LnZhbHVlLnN1YnN0cmluZygwLCByZXN1bHQu
dmFsdWUubGFzdEluZGV4T2YoIi8iKSk7CisgICAgY29uc3QgdXJsID0gYmFzZVVSTCArICIvcmVz
b3VyY2VzL2RhdGEuanNvbiI7CisgICAgYXdhaXQgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21t
YW5kKHttZXRob2Q6ICJOZXR3b3JrLmFkZEludGVyY2VwdGlvbiIsIHBhcmFtczogeyB1cmwsIHN0
YWdlOiAicmVxdWVzdCIgfX0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAicmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdENvbnRpbnVlIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJUZXN0IGNvbnRpbnVlIGludGVyY2VwdGVkIHJlcXVlc3QuIiwKKyAgICAgICAg
YXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0
LgorICAgICAgICAgICAgY29uc3QgW2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVu
dF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9j
b2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoKSIKKyAgICAgICAgICAg
ICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7
ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KQorICAgICAgICAgICAgXSk7CisK
KyAgICAgICAgICAgIC8vIExldCB0aGUgbG9hZCBjb250aW51ZS4KKyAgICAgICAgICAgIGNvbnN0
IFsgZmV0Y2hSZXN1bHQgXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdhaXRQcm9t
aXNlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VPYmplY3RJZDogZmV0
Y2hSZXN1bHRQcm9taXNlLnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuQnlWYWx1ZTogdHJ1ZQorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0
Q29udGludWUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRl
cmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQKKyAgICAgICAgICAgICAgICB9fSkKKyAgICAg
ICAgICAgIF0pOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoIlJlc3BvbnNlIGRhdGE6
ICciICsgZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlLnRleHQudHJpbSgpICsgIiciKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
cmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXF1ZXN0IiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0IGZ1bGZpbGwgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHJlc3BvbnNlLiIs
CisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5kIGlu
dGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVy
Y2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBh
cmFtczogeworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiCisg
ICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3
YWl0RXZlbnQoe2V2ZW50OiAiTmV0d29yay5yZXF1ZXN0SW50ZXJjZXB0ZWQifSkKKyAgICAgICAg
ICAgIF0pOworCisgICAgICAgICAgICAvLyBGdWxmaWxsIHRoZSByZXF1ZXN0IHdpdGggZGF0YS4K
KyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJS
dW50aW1lLmF3YWl0UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBwcm9t
aXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUKKyAgICAgICAgICAgICAgICB9fSksCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJO
ZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAg
ICAgICAgICAgICAgICB1cmw6IHVybC5yZXBsYWNlKCdkYXRhLmpzb24nLCAnZGF0YTIuanNvbicp
LAorICAgICAgICAgICAgICAgIH19KQorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBQcm90
b2NvbFRlc3QucGFzcygidGV4dDogIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZS50ZXh0KTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAicmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXNwb25zZSIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiVGVzdCBmdWxmaWxsIGludGVyY2VwdGVkIHJlcXVlc3Qgd2l0aCByZXNw
b25zZS4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgLy8gRmV0Y2ggVVJM
IGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAgICBjb25zdCBbZmV0Y2hSZXN1bHRQcm9taXNl
LCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVh
dGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0
YSgpIgorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90
b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVxdWVzdEludGVyY2VwdGVkIn0pCisg
ICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgLy8gRnVsZmlsbCB0aGUgcmVxdWVzdCB3aXRo
IGRhdGEuCisgICAgICAgICAgICBjb25zdCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5h
bGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0
aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9iamVjdElkLAor
ICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlCisgICAgICAgICAgICAgICAg
fX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0
aG9kOiAiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uc2UiLCBwYXJhbXM6IHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQs
CisgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAgICAgICBz
dGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7ICJteS1oZWFk
ZXIiOiAibXktdmFsdWUiIH0sCisgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlOiAiYXBwbGlj
YXRpb24vb2N0ZXQtc3RyZWFtIiwKKyAgICAgICAgICAgICAgICAgICAgY29udGVudDogYnRvYSgi
aW50ZXJjZXB0ZWQgZGF0YSIpLAorICAgICAgICAgICAgICAgICAgICBiYXNlNjRFbmNvZGVkOiB0
cnVlCisgICAgICAgICAgICAgICAgfX0pCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIHBy
aW50RmV0Y2hSZXN1bHQoZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlKTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAicmVxdWVzdElu
dGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXNwb25zZVdpdGhFcnJvciIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdCBhYm9ydCBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggZXJyb3IuIiwKKyAg
ICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJj
ZXB0IGl0LgorICAgICAgICAgICAgY29uc3QgW2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0
ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
UHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1z
OiB7CisgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoKSIKKyAgICAg
ICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRF
dmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KQorICAgICAgICAgICAg
XSk7CisKKyAgICAgICAgICAgIC8vIEFib3J0IHRoZSByZXF1ZXN0IGFzIGNhbmNlbGVkLgorICAg
ICAgICAgICAgY29uc3QgW2ZldGNoUmVzdWx0XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRp
bWUuYXdhaXRQcm9taXNlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VP
YmplY3RJZDogZmV0Y2hSZXN1bHRQcm9taXNlLnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZQorICAgICAgICAgICAgICAgIH19KSwKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdv
cmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAgICAg
ICAgICAgICAgICBlcnJvclR5cGU6ICJDYW5jZWxsYXRpb24iCisgICAgICAgICAgICAgICAgfX0p
CisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJSZXF1ZXN0
IGVycm9yOiAnIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZSArICInIik7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInRlYXJE
b3duIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3Rv
clByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5yZW1vdmVJbnRlcmNlcHRp
b24iLCBwYXJhbXM6IHsgdXJsLCBzdGFnZTogInJlcXVlc3QiIH19KTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CisKKyAgICBmdW5jdGlv
biBwcmludEZldGNoUmVzdWx0KHJlc3VsdCkKKyAgICB7CisgICAgICAgIFByb3RvY29sVGVzdC5w
YXNzKCJ0ZXh0OiAiICsgcmVzdWx0LnRleHQpOworICAgICAgICBQcm90b2NvbFRlc3QucGFzcygi
c3RhdHVzOiAiICsgcmVzdWx0LnN0YXR1cyk7CisgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJz
dGF0dXNUZXh0OiAiICsgcmVzdWx0LnN0YXR1c1RleHQpOworICAgICAgICBQcm90b2NvbFRlc3Qu
cGFzcygibWltZVR5cGU6ICIgKyByZXN1bHQubWltZVR5cGUpOworICAgICAgICBQcm90b2NvbFRl
c3QucGFzcygibXktaGVhZGVyOiAiICsgcmVzdWx0LmhlYWRlcik7CisgICAgfQorfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3Qg
aW50ZXJjZXB0aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhMi5qc29uIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEyLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg2Y2E0
OTRjMWRmMzk2YjNkOTgyMTdjMTM4ZmI3MTU4ODFmMzJhNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhMi5qc29uCkBAIC0wLDAg
KzEgQEAKK2ludGVyY2VwdGVkIHJlcXVlc3QK
</data>
<flag name="review"
          id="414856"
          type_id="1"
          status="-"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399304</attachid>
            <date>2020-05-13 15:20:24 -0700</date>
            <delta_ts>2020-05-13 15:29:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200513152024.patch</filename>
            <type>text/plain</type>
            <size>61543</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTk5NDI3ZDM3MjJjZWNkZDk3YTYxMDkzNGJjODUzZGQ2MGNlNGM2Li41NWIxOTQwN2Y1YjI5MGY0
ZmM5Njc3N2Q0NmQzMzNiMGJhYzY3OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNS0xMiAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRml4IGV4aXN0aW5nIHVz
YWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlNDIGFuZCBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2YTNmNDc4MWFmNjI1ZGY1YTg4OWJiOWJhODkxYmIwZmMxN2E4NjFhLi5jNjVjNmY4M2Y0OTcw
MTViNzk3NTFhMzg1OGU1MzA2NTNiMzliMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAK
KzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAK
KyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJl
cXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZp
ZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAg
J3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVl
c3RJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3Zl
SW50ZXJjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3Bv
bnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0wNS0xMiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3N0ZXIg
c2V0IGFmdGVyIHBsYXliYWNrIGJlZ2lucyBzaG91bGQgYmUgaWdub3JlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggMzhjN2MzMDY0YmVlNzRjOGQyOTExMGRjYzA3NDA3Zjg2Yzk0YjljOS4u
MjA3M2Y3YTc4OWM4MjBlYzI2MDExNGI2ZGI3ZDA2MGU2ODk4YzAzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDUtMTMgIFBhdmVsICA8cGF2ZWwuZmVs
ZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVl
c3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRp
b24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBi
ZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2Fu
IG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVycmlk
ZSk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxSZXNv
dXJjZU92ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXF1
ZXN0SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLl9o
YW5kbGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtP
YnNlcnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKyAgICAgICAgKFdJLk5ldHdv
cmtPYnNlcnZlcik6CisKIDIwMjAtMDUtMTEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5ldHdvcms6IFRpbWluZzogZ2FwcyBhcm91
bmQgdGhlICJSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHRpbWluZyBkYXRhIiBtZXNzYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDE1YTFmYTlhYjRiNTg5OGY0MWM3OTY5NmY3N2IxNGY2MDMwODU5YmIuLjBjZGIxYjIx
MzUyMTg5NmU3N2Q1NDM3ZDNhZDkxYTQwNzk4N2QxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29y
ayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9k
aWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAg
ICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIwLTA1LTEyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsgZHJh
ZyBhbmQgZHJvcCBoYW5kbGluZyBpbiBwcmVwYXJhdGlvbiBmb3IgR1RLNApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgppbmRl
eCA3NzdhNTQxNjZlZDY2NjQ1NjFiM2Y4MjQ5YTZhYmI0YWM1OWQwNDgwLi5hMTY3NzBiYWM0NTY1
YzA0NTlmMTFkNGIyMzIxYjU5ODU0N2UyOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgpAQCAtMTU1LDcgKzE1NSwx
MyBAQAogICAgICAgICAgICAgImlkIjogIk5ldHdvcmtTdGFnZSIsCiAgICAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVudCBzdGFn
ZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKLSAgICAgICAgICAgICJlbnVtIjogWyJyZXNwb25z
ZSJdCisgICAgICAgICAgICAiZW51bSI6IFsicmVxdWVzdCIsICJyZXNwb25zZSJdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJSZXNvdXJjZUVycm9yVHlwZSIsCisg
ICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKKyAgICAgICAgICAgICJl
bnVtIjogWyJHZW5lcmFsIiwgIkFjY2Vzc0NvbnRyb2wiLCAiQ2FuY2VsbGF0aW9uIiwgIlRpbWVv
dXQiXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC0yMzgsNyArMjQ0
LDcgQEAKICAgICAgICAgICAgICJuYW1lIjogImFkZEludGVyY2VwdGlvbiIsCiAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiQWRkIGFuIGludGVyY2VwdGlvbi4iLAogICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJz
dHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJp
bmciLCAiZGVzY3JpcHRpb24iOiAiVVJMIHBhdHRlcm4gdG8gaW50ZXJjZXB0LCBpbnRlcmNlcHQg
ZXZlcnl0aGluZyBpZiBub3Qgc3BlY2lmaWVkIG9yIGVtcHR5IiB9LAogICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiY2FzZVNlbnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBv
ZiBgdXJsYCBwYXJhbWV0ZXIuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdl
eCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
SWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4i
IH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtT
dGFnZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0
aGlzIGFwcGxpZXMgdG8gYWxsIG5ldHdvcmsgc3RhZ2VzLiIgfQpAQCAtMjU2LDIyICsyNjIsMzQg
QEAKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0
Q29udGludWUiLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIGFuIGludGVy
Y2VwdGlvbiB3aXRoIG5vIG1vZGlmaWNhdGlvbnMuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJDb250aW51ZSByZXF1ZXN0IG9yIHJlc3BvbnNlIHdpdGhvdXQgbW9kaWZpY2F0aW9ucy4i
LAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBj
b250aW51ZS4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlJlcGxhY2UgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRlZCBv
bmUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklk
ZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2Ug
dG8gY29udGludWUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWV0aG9kIiwgInR5
cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1
ZXN0IG1ldGhvZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6
ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3Qg
dXJsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJI
ZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ug
aGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEs
IGJhc2U2NC1lbmNvZGVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7
CiAgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRXaXRoUmVzcG9uc2UiLAogICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgcmVzcG9uc2UgY29udGVudCBmb3IgYW4gaW50ZXJj
ZXB0ZWQgcmVzcG9uc2UuIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2Ny
aXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlc3BvbnNl
IHRvIG1vZGlmeS4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50IiwgInR5
cGUiOiAic3RyaW5nIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYmFzZTY0RW5jb2Rl
ZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSwgaWYgY29udGVudCB3
YXMgc2VudCBhcyBiYXNlNjQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVu
dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImJhc2U2NEVuY29kZWQiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNvbnRlbnQgd2FzIHNlbnQgYXMgYmFz
ZTY0LiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1pbWVUeXBlIiwgInR5cGUiOiAi
c3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk1JTUUgVHlwZSBmb3Ig
dGhlIGRhdGEuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzIiwgInR5cGUi
OiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3Bv
bnNlIHN0YXR1cyBjb2RlLiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZp
ZWQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0eXBlIjog
InN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNl
IHN0YXR1cyB0ZXh0LiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQu
IiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRl
cnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFk
ZXJzLiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3Mg
dGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJlcnJvclR5cGUiLCAiJHJlZiI6ICJSZXNvdXJjZUVycm9yVHlwZSIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJEZWxpdmVyIGVycm9yIHJlYXNvbiBmb3Ig
dGhlIHJlcXVlc3QgZmFpbHVyZS4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0s
CkBAIC0zNDgsOSArMzY2LDE3IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXNvdXJj
ZSIsICIkcmVmIjogIkNhY2hlZFJlc291cmNlIiwgImRlc2NyaXB0aW9uIjogIkNhY2hlZCByZXNv
dXJjZSBkYXRhLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJyZXF1ZXN0SW50ZXJjZXB0ZWQiLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXF1ZXN0IGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25kIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250
aW51ZTwvY29kZT4sIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Q8L2NvZGU+YCBv
ciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZTwvY29kZT5gIHRvIHJlc29sdmUg
dGhpcyByZXF1ZXN0LiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlw
dGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3Bv
bmRzIHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2Rl
Pi4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0IiwgIiRyZWYiOiAiUmVx
dWVzdCIsICJkZXNjcmlwdGlvbiI6ICJPcmlnaW5hbCByZXF1ZXN0IGNvbnRlbnQgdGhhdCB3b3Vs
ZCBwcm9jZWVkIGlmIHRoaXMgaXMgY29udGludWVkLiIgfQorICAgICAgICAgICAgXQorICAgICAg
ICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJyZXNwb25zZUludGVyY2VwdGVk
IiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhUVFAgcmVzcG9uc2Ug
aGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0IHJlc3BvbnNlIHdpdGggPGNv
ZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4gb3IgPGNvZGU+TmV0d29yay5pbnRl
cmNlcHRXaXRoUmVzcG9uczwvY29kZT5gIHRvIGNvbnRpbnVlIHRoaXMgcmVzcG9uc2UuIiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJl
ZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0
d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4gb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRX
aXRoUmVzcG9uc2U8L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCiAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJ
ZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0
aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8Y29k
ZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4iIH0sCiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJyZXNwb25zZSIsICIkcmVmIjogIlJlc3BvbnNlIiwgImRlc2NyaXB0aW9uIjog
Ik9yaWdpbmFsIHJlc3BvbnNlIGNvbnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMg
Y29udGludWVkLiIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAwYzQ0MmVlOTA4ODc3ZDIwNjdkNjVlODc0NDE2
NTJhOGNmMDBjODhlLi5kMTBiMzI1NTEzZTJhY2EwNmI3YTM3YTg1NzA4NmFhMTJiYWRjNjkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcApAQCAtODEwLDEwICs4MTAsMTcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJiBjYWMK
ICAgICB9CiB9CiAKLWJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0
UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxJbnRlcmNlcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoYXV0byog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQo
KSkKLSAgICAgICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVx
dWVzdCk7CisgICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVz
dCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlm
IChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdv
cmtBZ2VudCgpKQorICAgICAgICByZXR1cm4gbmV0d29ya0FnZW50LT5zaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0KHJlcXVlc3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtODI0LDYgKzgzMSwx
MiBAQCBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVy
KQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJl
cXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBp
ZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3
b3JrQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAppbmRleCAwM2JkZDU1Y2M5MzBkZTBjZmM2MWY4ZDllNDIxMGY0OTUy
YWE0NjMzLi5jYzcwZTY5M2JiYWU3ZDFjYTdjZDM2ZWRlMTI0ZDBjOWM2MTY5ZDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5j
bHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIK
QEAgLTIzMiw4ICsyMzMsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRBcHBl
YXJhbmNlRGlkQ2hhbmdlKFBhZ2UmLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKTsKICAgICBzdGF0
aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CiAKLSAg
ICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgRnJh
bWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNv
dXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Kik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYs
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC00MzcsOCAr
NDQwLDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGVmYXVsdEFwcGVhcmFuY2VEaWRD
aGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKTsK
ICAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNv
dXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgYm9v
bCB3aWxsSW50ZXJjZXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGlu
dGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtMTI0
OSwxMSArMTI1NCwxOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmCiAgICAgd2lsbERlc3Ryb3lD
YWNoZWRSZXNvdXJjZUltcGwoY2FjaGVkUmVzb3VyY2UpOwogfQogCi1pbmxpbmUgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyhmYWxzZSk7CiAgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm4gd2lsbEludGVy
Y2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKKyAgICAgICAg
cmV0dXJuIHdpbGxJbnRlcmNlcHRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uUHVibGljOjpoYXNGcm9udGVuZHMoKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICBy
ZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJl
cXVlc3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTI2NSw2ICsxMjc4LDEzIEBAIGlu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qq
KT4mJiBoYW5kbGVyKQoreworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNo
b3VsZEludGVyY2VwdFJlcXVlc3QobG9hZGVyLmZyYW1lKCksIHJlcXVlc3QpKTsKKyAgICBpZiAo
YXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShs
b2FkZXIuZnJhbWUoKSkpCisgICAgICAgIGludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50
aW5nQWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDk1NGFhZjEyMWE5ZmE1MDdkODNiYzEwYWUz
N2RlMWYxMjhmN2RjZmMuLjQwNjY4YTFjYjY5ZmI3NzQxNmY4Mjc2ZDlkZGQwMTk4OGU1ZDBiMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC0zMCwxMSArMzAsMjEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxk
SW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoZnJhbWUsIHJlcXVlc3QpOworfQorCiBib29sIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxv
YWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBo
YW5kbGVyKQoreworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVz
dChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBX
VEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBiNjdlODliODBiNGU3YTg1
ODZjYWM4MWFkZTVkNThhMWJjYjBkNDMxLi41NDNmNWIwMzM1YzFlZDZkZDNjNzY1YmIzMWY4MTEz
YzM0NzA2NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwxNCArMzYsMjcgQEAgY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQgewogcHVibGljOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9h
ZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJik7
CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+
JiYpOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJ
bnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRp
YyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdElu
dGVybmFsKFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlcXVlc3QqKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCitpbmxpbmUgYm9vbCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJh
bWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFs
KCpmcmFtZSwgcmVxdWVzdCk7Cit9CisKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9O
T19GUk9OVEVORFMoZmFsc2UpOwpAQCAtNTMsNiArNjYsMTIgQEAgaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSoKICAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUs
IHJlc3BvbnNlKTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0KGxvYWRlci5mcmFtZSgpLCBsb2FkZXIucmVxdWVzdCgpKSk7CisgICAgaW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShm
cmFtZSwgcmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBhZmNkZDJhN2ZhZmZlMGJl
Yzk4MjA3MmQ4OTRiYzg1YzZlMzBjNDRjLi5kZTkyZmM2ODllZTlhOGMyMGJkMDYzNzVmNDk4MWQw
MmQzMTA3NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUVFBIZWFk
ZXJNYXAuaCIKQEAgLTg0MSwxMiArODQyLDEzIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBtX3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAg
ICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFyKCk7CiAKKyAgICBjb250aW51ZVBlbmRpbmdS
ZXF1ZXN0cygpOwogICAgIGNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpOwogCiAgICAgc2V0UmVz
b3VyY2VDYWNoaW5nRGlzYWJsZWQoZmFsc2UpOwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwpCitib29sIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwsIE5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UpCiB7
CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC04NTUsNiArODU3LDEw
IEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBpbnRlcmNlcHQgOiBtX2lu
dGVyY2VwdHMpIHsKKyAgICAgICAgaWYgKGludGVyY2VwdC5uZXR3b3JrU3RhZ2UgIT0gbmV0d29y
a1N0YWdlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChpbnRlcmNlcHQudXJs
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBhdXRvIHNlYXJj
aFN0cmluZ1R5cGUgPSBpbnRlcmNlcHQuaXNSZWdleCA/IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6
OlNlYXJjaFN0cmluZ1R5cGU6OlJlZ2V4IDogQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNo
U3RyaW5nVHlwZTo6RXhhY3RTdHJpbmc7CiAgICAgICAgIGF1dG8gcmVnZXggPSBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzOjpjcmVhdGVSZWd1bGFyRXhwcmVzc2lvbkZvclNlYXJjaFN0cmluZyhpbnRl
cmNlcHQudXJsLCBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSwgc2VhcmNoU3RyaW5nVHlwZSk7CiAg
ICAgICAgIGlmIChyZWdleC5tYXRjaCh1cmxTdHJpbmcpICE9IC0xKQpAQCAtODY0LDYgKzg3MCwx
NiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29u
dGludWVQZW5kaW5nUmVxdWVzdHMoKQoreworICAgIGZvciAoYXV0byYgcGVuZGluZ1JlcXVlc3Qg
OiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy52YWx1ZXMoKSkgeworICAgICAgICBSZXNvdXJj
ZUxvYWRlciogbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAg
ICBpZiAobG9hZGVyLT5pZGVudGlmaWVyKCkpCisgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdC0+
bV9jb21wbGV0aW9uSGFuZGxlcigmbG9hZGVyLT5yZXF1ZXN0KCkpOworICAgIH0KKyAgICBtX3Bl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5jbGVhcigpOworfQorCiB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVzcG9uc2VzKCkKIHsKICAgICBmb3IgKGF1dG8mIHBl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZSA6IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy52YWx1
ZXMoKSkKQEAgLTEwMjksNjIgKzEwNDUsNjggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNldEludGVyY2VwdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib28KIAog
ICAgIG1faW50ZXJjZXB0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAgICBpZiAoIW1faW50ZXJj
ZXB0aW9uRW5hYmxlZCkKKyAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkgeworICAgICAg
ICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgICAgICBjb250aW51ZVBlbmRpbmdSZXNw
b25zZXMoKTsKKyAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRl
cmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVn
ZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKQordm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5ldHdvcmtTdGFnZVN0
cmluZykKIHsKLSAgICBpZiAobmV0d29ya1N0YWdlU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0
d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtT
dGFnZT4oKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7
Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0
YWdlOiAiX3MsICpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfQotCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKICAgICBpbnRlcmNlcHQu
dXJsID0gdXJsOwogICAgIGlmIChvcHRpb25hbENhc2VTZW5zaXRpdmUpCiAgICAgICAgIGludGVy
Y2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0
aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElzUmVn
ZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisgICAg
aWYgKG9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKSB7CisgICAgICAgIGF1dG8gbmV0d29ya1N0
YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4o
Km9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2Up
IHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3Jr
U3RhZ2U6ICJfcywgKm9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnRlcmNlcHQubmV0d29ya1N0YWdlID0gKm5ldHdv
cmtTdGFnZTsKKyAgICB9CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5hcHBlbmRJZk5vdENvbnRh
aW5zKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVyY2VwdCBmb3IgZ2l2
ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVhZHkgZXhpc3RzIl9zOwogfQogCi12b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNp
dGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtT
dGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1vdmVJbnRlcmNlcHRp
b24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9v
bCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxOZXR3b3JrU3RhZ2VTdHJpbmcpCiB7Ci0gICAgaWYgKG5ldHdv
cmtTdGFnZVN0cmluZykgewotICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VTdHJp
bmcpOwotICAgICAgICBpZiAoIW5ldHdvcmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0YWdl
U3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQogICAgIElu
dGVyY2VwdCBpbnRlcmNlcHQ7CiAgICAgaW50ZXJjZXB0LnVybCA9IHVybDsKICAgICBpZiAob3B0
aW9uYWxDYXNlU2Vuc2l0aXZlKQogICAgICAgICBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSA9ICpv
cHRpb25hbENhc2VTZW5zaXRpdmU7CiAgICAgaWYgKG9wdGlvbmFsSXNSZWdleCkKICAgICAgICAg
aW50ZXJjZXB0LmlzUmVnZXggPSAqb3B0aW9uYWxJc1JlZ2V4OwotCi0gICAgLy8gRklYTUU6IFN1
cHBvcnQgaW50ZXJjZXB0aW5nIHJlcXVlc3RzLgorICAgIGlmIChvcHRpb25hbE5ldHdvcmtTdGFn
ZVN0cmluZykgeworICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpvcHRpb25hbE5ldHdvcmtTdGFnZVN0
cmluZyk7CisgICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgICAgICBlcnJvclN0
cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpvcHRpb25hbE5l
dHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9ICpuZXR3b3JrU3RhZ2U7CisgICAgfQogCiAgICAg
aWYgKCFtX2ludGVyY2VwdHMucmVtb3ZlQWxsKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3Ry
aW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlzUmVnZXgi
X3M7CiB9CiAKLWJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0UmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6d2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7Cisg
ICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpS
ZXF1ZXN0KSB8fCBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpS
ZXNwb25zZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNl
cHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1f
aW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpKTsKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJj
ZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCk7CiB9CiAKIGJvb2wgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwOTIsNyArMTExNCwxOCBAQCBib29sIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcAogICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpKTsK
KyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpLCBOZXR3b3JrU3RhZ2U6
OlJlc3BvbnNlKTsKK30KKwordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVyKQoreworICAgIEFTU0VSVChtX2VuYWJsZWQp
OworICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOworCisgICAgU3RyaW5nIHJlcXVl
c3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGxvYWRlci5pZGVudGlmaWVyKCkp
OworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcmNlcHRS
ZXF1ZXN0PigmbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBtX3BlbmRpbmdJbnRlcmNl
cHRSZXF1ZXN0cy5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHBlbmRpbmdSZXF1ZXN0KSk7CisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
JiBoYW5kbGVyKQpAQCAtMTExNCwxNyArMTE0NywxNDAgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LAogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIHsKKyAgICBhdXRv
IHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFr
ZShyZXF1ZXN0SWQpOworICAgIGlmIChwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCkgeworICAgICAg
ICBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxlcigmcGVuZGluZ0lu
dGVyY2VwdFJlcXVlc3QtPm1fbG9hZGVyLT5yZXF1ZXN0KCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRl
cmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwotICAgIGlmICghcGVuZGluZ0ludGVyY2Vw
dFJlc3BvbnNlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRl
cmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICBpZiAocGVuZGluZ0lu
dGVyY2VwdFJlc3BvbnNlKSB7CisgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVz
cG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3Qgb3IgcmVz
cG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKK30KKwordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBTdHJpbmcq
IHVybCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcqIHBvc3REYXRh
KQoreworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0
cy50YWtlKHJlcXVlc3RJZCk7CisgICAgaWYgKHBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJl
c291cmNlTG9hZGVyKiBsb2FkZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7Cisg
ICAgICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgIC8vIERvIG5v
dCB0aHJvdyB1cG9uIGNvbnRpbnVlIG9mIGNhbmNlbGVkIHJlcXVlc3RzLgorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIFNhZmUgdG8gY29uc3QgY2FzdCBhdCB0aGlz
IHBvaW50LCB3ZSBhcmUgb25seSBhZGp1c3RpbmcgdGhlIG1ldGhvZCAvIGhlYWRlcnMgLyBwb3N0
LgorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOwor
ICAgICAgICBpZiAodXJsKQorICAgICAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgKnVy
bCkpOworICAgICAgICBpZiAobWV0aG9kKQorICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCptZXRob2QpOworICAgICAgICBpZiAoaGVhZGVycykgeworICAgICAgICAgICAgSFRUUEhl
YWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6
ICpoZWFkZXJzKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAg
ICAgICAgICAgIGlmIChoZWFkZXIudmFsdWUtPmFzU3RyaW5nKGhlYWRlclZhbHVlKSkKKyAgICAg
ICAgICAgICAgICAgICAgZXhwbGljaXRIZWFkZXJzLmFkZChoZWFkZXIua2V5LCBoZWFkZXJWYWx1
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocG9z
dERhdGEpIHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgICAgICAg
ICBpZiAoIWJhc2U2NERlY29kZSgqcG9zdERhdGEsIGJ1ZmZlcikpIHsKKyAgICAgICAgICAgICAg
ICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZGVjb2RlIGdpdmVuIHBvc3REYXRhIl9zOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlZjxGb3Jt
RGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUEJvZHkoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIH0KKyAgICAgICAgcGVuZGlu
Z1JlcXVlc3QtPm1fY29tcGxldGlvbkhhbmRsZXIoJnJlcXVlc3QpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kV2l0aE9yaWdp
bmFsUmVzcG9uc2UoKTsKKyAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJj
ZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKIH0KIAotdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wg
YmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMs
IGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQor
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcq
IGNvbnRlbnQsIGNvbnN0IGJvb2wqIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5
cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpT
T046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBlcnJvclR5cGVTdHJpbmcpCiB7Cisg
ICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2Uo
cmVxdWVzdElkKTsKKyAgICBpZiAocGVuZGluZ1JlcXVlc3QgJiYgZXJyb3JUeXBlU3RyaW5nKSB7
CisgICAgICAgIFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2Fk
ZXIuZ2V0KCk7CisgICAgICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBhYm9ydCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFk
eSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBhdXRvIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBl
cnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpSZXNvdXJjZUVycm9yVHlwZT4oKmVycm9yVHlwZVN0cmluZyk7CisgICAgICAgIGlmICghZXJy
b3JUeXBlKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmtub3duIGVycm9yIHR5cGUi
X3M7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKKyAgICAgICAgc3dpdGNoIChlcnJvclR5cGUudmFsdWUoKSkgeworICAgICAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpHZW5l
cmFsOgorICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpBY2Nl
c3NDb250cm9sOgorICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJBY2Nlc3MgZGVuaWVkIl9zLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBl
OjpDYW5jZWxsYXRpb246CisgICAgICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JE
b21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwoKSwgIlJlcXVlc3QgY2FuY2VsZWQi
X3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVy
cm9yVHlwZTo6VGltZW91dDoKKyAgICAgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAiUmVxdWVzdCB0aW1lZCBv
dXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2FkZXItPmRpZEZhaWwoZXJy
b3IpOworICAgICAgICBwZW5kaW5nUmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxlcihudWxscHRy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocGVuZGluZ1JlcXVlc3QgJiYgKCFz
dGF0dXMgfHwgIXN0YXR1c1RleHQgfHwgIW1pbWVUeXBlIHx8ICFoZWFkZXJzKSkgeworICAgICAg
ICBlcnJvclN0cmluZyA9ICJzdGF0dXMsIHN0YXR1c1RleHQsIG1pbWVUeXBlIGFuZCBoZWFkZXJz
IG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gZnVsZmlsbGluZyBpbnRlcmNlcHRlZCByZXF1ZXN0Il9z
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChwZW5kaW5nUmVxdWVzdCkgeworICAg
ICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xv
YWRlci5nZXQoKTsKKyAgICAgICAgaWYgKCFsb2FkZXItPmlkZW50aWZpZXIoKSkgeworICAgICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFs
cmVhZHkgYmVlbiBwcm9jZXNzZWQiX3M7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgaWYgKGJhc2U2NEVu
Y29kZWQgJiYgKmJhc2U2NEVuY29kZWQgJiYgY29udGVudCkgeworICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKCpjb250ZW50
LCBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRl
Y29kZSBnaXZlbiBjb250ZW50Il9zOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOworICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnQpCisgICAgICAgICAgICBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC0+dXRmOCgpLmRhdGEoKSwgY29udGVudC0+dXRm
OCgpLmxlbmd0aCgpKTsKKworICAgICAgICAvLyBNaW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9y
IC0gcmVwb3J0IGRpZFJlY2VpdmVSZXNwb25zZSAmIGRpZEZpbmlzaExvYWRpbmcuCisgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLT51cmwo
KSwgKm1pbWVUeXBlLCBkYXRhLT5zaXplKCksIFN0cmluZygpKTsKKyAgICAgICAgcmVzcG9uc2Uu
c2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOwor
ICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgqc3RhdHVzKTsKKyAgICAgICAgcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoKnN0YXR1c1RleHQpOworICAgICAgICBIVFRQSGVhZGVy
TWFwIGV4cGxpY2l0SGVhZGVyczsKKyAgICAgICAgZm9yIChhdXRvJiBoZWFkZXIgOiAqaGVhZGVy
cykgeworICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICAgICAgaWYgKGhl
YWRlci52YWx1ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAgICAgICAgICAgIGV4cGxp
Y2l0SGVhZGVycy5hZGQoaGVhZGVyLmtleSwgaGVhZGVyVmFsdWUpOworICAgICAgICB9CisgICAg
ICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMp
KTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpD
b250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgICAgIGxvYWRlci0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBkYXRhID0gZGF0YS5yZWxlYXNlTm9uTnVs
bCgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAg
ICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShkYXRhKSwgZGF0YS0+c2l6
ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgbG9hZGVyLT5kaWRG
aW5pc2hMb2FkaW5nKE5ldHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHBlbmRpbmdSZXF1ZXN0LT5tX2NvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBtX3Bl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwogICAgIGlmICghcGVuZGlu
Z0ludGVyY2VwdFJlc3BvbnNlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVu
ZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKQEAgLTExNTIs
MTYgKzEzMDgsMTYgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhS
ZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICB9CiAKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7Ci0gICAgaWYgKGJhc2U2NEVuY29kZWQpIHsK
KyAgICBpZiAoYmFzZTY0RW5jb2RlZCAmJiAqYmFzZTY0RW5jb2RlZCAmJiBjb250ZW50KSB7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgICAgIGlmICghYmFzZTY0RGVjb2Rl
KGNvbnRlbnQsIGJ1ZmZlcikpIHsKKyAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKmNvbnRlbnQs
IGJ1ZmZlcikpIHsKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUg
Z2l2ZW4gY29udGVudCJfczsKICAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+
cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5ndGgo
KSk7CisgICAgfSBlbHNlIGlmIChjb250ZW50KQorICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LT51dGY4KCkuZGF0YSgpLCBjb250ZW50LT51dGY4KCku
bGVuZ3RoKCkpOwogCiAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kKG92ZXJy
aWRlUmVzcG9uc2UsIG92ZXJyaWRlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBiZmQxMzFl
OWI1ODU2Yzg0ZGE3NzI0ODA1ZTcxMzk3YjdjNzQ4NmE5Li41ODY0NTIzNDU0ZmE4NTNhMjVkMWUw
OGExMDgxYzk2YzYxNDIwYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTkxLDcgKzkxLDggQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNv
bnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUlu
dGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBj
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtT
dGFnZVN0cmluZykgZmluYWw7CiAgICAgdm9pZCBpbnRlcmNlcHRDb250aW51ZShFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKSBmaW5hbDsKLSAgICB2b2lkIGludGVyY2VwdFdp
dGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlw
ZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBoZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXF1ZXN0
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogbWV0
aG9kLCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcqIHBvc3REYXRhKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25z
ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIGNv
bnRlbnQsIGNvbnN0IGJvb2wqIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUs
IGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046
Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBlcnJvclR5cGUpIGZpbmFsOwogCiAgICAg
Ly8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHls
ZSgpOwpAQCAtMTE4LDkgKzExOSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWluRnJhbWVOYXZp
Z2F0ZWQoRG9jdW1lbnRMb2FkZXImKTsKICAgICB2b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwog
ICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKLSAgICBi
b29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIGJv
b2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHNob3Vs
ZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBp
bnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChS
ZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Kik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFy
cjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwogICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKTsKQEAg
LTE0MCw3ICsxNDMsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEluc3BlY3RvclBhZ2VB
Z2VudDo6UmVzb3VyY2VUeXBlKTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCk7Cisg
ICAgdXNpbmcgTmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0
d29ya1N0YWdlOworICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCwgTmV0d29ya1N0YWdlKTsK
KyAgICB2b2lkIGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBjb250aW51ZVBl
bmRpbmdSZXNwb25zZXMoKTsKIAogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElk
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKQEAgLTE1Myw2ICsxNTgsMjAgQEAgcHJpdmF0ZToK
IAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAorICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRS
ZXF1ZXN0IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJl
cXVlc3QpOworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgICAgICAgICA6IG1fbG9hZGVyKGxvYWRlcikKKyAgICAgICAgICAgICwg
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAg
eyB9CisKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QoKSA9IGRlZmF1bHQ7CisgICAg
ICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CisgICAgICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+IG1fY29tcGxldGlvbkhhbmRsZXI7
CisgICAgfTsKKwogICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMjA0LDE1ICsyMjMsMTggQEAgcHJpdmF0ZToK
ICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlIHsgdHJ1ZSB9
OwogICAgICAgICBib29sIGlzUmVnZXggeyBmYWxzZSB9OworICAgICAgICBOZXR3b3JrU3RhZ2Ug
bmV0d29ya1N0YWdlIHsgTmV0d29ya1N0YWdlOjpSZXNwb25zZSB9OwogCiAgICAgICAgIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZXJjZXB0JiBvdGhlcikgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIHVybCA9PSBvdGhlci51cmwKICAgICAgICAgICAgICAgICAm
JiBjYXNlU2Vuc2l0aXZlID09IG90aGVyLmNhc2VTZW5zaXRpdmUKLSAgICAgICAgICAgICAgICAm
JiBpc1JlZ2V4ID09IG90aGVyLmlzUmVnZXg7CisgICAgICAgICAgICAgICAgJiYgaXNSZWdleCA9
PSBvdGhlci5pc1JlZ2V4CisgICAgICAgICAgICAgICAgJiYgbmV0d29ya1N0YWdlID09IG90aGVy
Lm5ldHdvcmtTdGFnZTsKICAgICAgICAgfQogICAgIH07CiAgICAgVmVjdG9yPEludGVyY2VwdD4g
bV9pbnRlcmNlcHRzOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGlu
Z0ludGVyY2VwdFJlcXVlc3Q+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0czsKICAgICBIYXNo
TWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZT4+IG1f
cGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlczsKIAogICAgIC8vIEZJWE1FOiBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQgc2hvdWxkIG5vdCBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMjMxZWRlYzhjY2M3MWQ2NTIxNzEwNjM2M2Y1Y2MzNDk5MGExNjQ3ZS4uNjU5ZTJm
ZTg5MDdiMzE1OTc2NjBhN2RkYzQ4Yjk0NWQzM2YwZjVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NDYsNyAr
ODQ2LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKIAogICAgIHJlcXVlc3QudXBkYXRlUmVm
ZXJyZXJQb2xpY3koZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgOiBS
ZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3duZ3JhZGUpOwogCi0gICAgaWYgKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoJmZyYW1lLCByZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW50ZXJjZXB0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAg
IHJlcXVlc3Quc2V0Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcp
OwogCiAgICAgYXV0byYgcGFnZSA9ICpmcmFtZS5wYWdlKCk7CkBAIC0xNDM2LDcgKzE0MzYsNyBA
QCBWZWN0b3I8UmVmPFNWR0ltYWdlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmFsbENhY2hlZFNW
R0ltYWdlcygpIGNvbnN0CiAKIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAg
aWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoZnJhbWUo
KSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEludGVyY2VwdChmcmFtZSgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
KSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCAi
SW5zcGVjdG9yIGludGVyY2VwdCJfcyB9KTsKIAogICAgIGlmIChyZXF1ZXN0LmNoYXJzZXQoKS5p
c0VtcHR5KCkgJiYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdCB8fCB0eXBl
ID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5h
Z2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
TmV0d29ya01hbmFnZXIuanMKaW5kZXggMWM4MTI2MGQ4ZGIyMzQ4YzAwYmZlZDk1YjdiYzcwMjAx
NTAwYzVkZS4uMDVjMGZkY2I0MzhkY2YwOTEwNzllZTgzMjZjMDQ4OWQwZWU3MThkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0
d29ya01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMKQEAgLTE2MSw3ICsxNjEsNyBAQCBXSS5OZXR3
b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUudXJsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGxvY2FsUmVzb3VyY2VP
dmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNS
ZWdleDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV0d29ya1N0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3
b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IElu
c3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CkBAIC0zNjQsNyArMzY0LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3
b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxS
ZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2Nh
bFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVn
ZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdv
cmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3Bv
bnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29y
ay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIC8v
IENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogTmV0d29yay5hZGRJbnRlcmNlcHRpb24gZGlkIG5v
dCBleGlzdC4KQEAgLTM5Nyw3ICszOTcsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5l
dHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgdXJsOiBsb2Nh
bFJlc291cmNlT3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGxv
Y2FsUmVzb3VyY2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAgICAgICAgICAgICAgaXNS
ZWdleDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICAgICAgbmV0
d29ya1N0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVz
cG9uc2UsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3
b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAg
Ly8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlvbiBk
aWQgbm90IGV4aXN0LgpAQCAtOTA2LDkgKzkwNiw5IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xh
c3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VSZXF1ZXN0SWRlbnRpZmllck1hcC5kZWxldGUocmVxdWVzdElkZW50aWZpZXIpOwogICAgIH0K
IAotICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKQor
ICAgIHJlcXVlc3RJbnRlcmNlcHRlZCh0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdCkKICAgICB7
Ci0gICAgICAgIGxldCB1cmwgPSBXSS51cmxXaXRob3V0RnJhZ21lbnQocmVzcG9uc2UudXJsKTsK
KyAgICAgICAgbGV0IHVybCA9IFdJLnVybFdpdGhvdXRGcmFnbWVudChyZXF1ZXN0LnVybCk7CiAg
ICAgICAgIGxldCBsb2NhbFJlc291cmNlT3ZlcnJpZGUgPSB0aGlzLmxvY2FsUmVzb3VyY2VPdmVy
cmlkZUZvclVSTCh1cmwpOwogICAgICAgICBpZiAoIWxvY2FsUmVzb3VyY2VPdmVycmlkZSB8fCBs
b2NhbFJlc291cmNlT3ZlcnJpZGUuZGlzYWJsZWQpIHsKICAgICAgICAgICAgIHRhcmdldC5OZXR3
b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUocmVxdWVzdElkKTsKQEAgLTEzNzcsNyArMTM3Nyw3
IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAg
ICAgICAgIGNhc2VTZW5zaXRpdmU6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRp
dmUsCiAgICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwK
LSAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsu
TmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tl
bmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAogICAgICAgICB9OwogCiAgICAg
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogTmV0d29yay5hZGRJbnRlcmNlcHRpb24g
LyBOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlvbiBkaWQgbm90IGV4aXN0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2Vy
dmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0
d29ya09ic2VydmVyLmpzCmluZGV4IDU5YzI5YzlhMzg0YjA0NzhkZDhkNmQwY2Y1OTI4YjYyOTgx
ODAwYWEuLmEyYmM0M2MyYzUwZTFkOWU5ZmU3MGQ4OWM0YTZjYTZjMDMyYWFmYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtP
YnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKQEAgLTEwOCw4ICsxMDgsOCBAQCBXSS5OZXR3b3JrT2Jz
ZXJ2ZXIgPSBjbGFzcyBOZXR3b3JrT2JzZXJ2ZXIgZXh0ZW5kcyBJbnNwZWN0b3JCYWNrZW5kLkRp
c3BhdGNoZXIKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KICAgICB9CiAKLSAg
ICByZXNwb25zZUludGVyY2VwdGVkKHJlcXVlc3RJZCwgcmVzcG9uc2UpCisgICAgcmVxdWVzdElu
dGVyY2VwdGVkKHJlcXVlc3RJZCwgcmVxdWVzdCkKICAgICB7Ci0gICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLnJlc3BvbnNlSW50ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3Bv
bnNlKTsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVxdWVzdEludGVyY2VwdGVkKHRoaXMu
X3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4
IGI4ZGNjYWQyYzJjZjhkMDAwMTQwMDQwN2NhY2E2ZTI3YjFmODgyNDkuLjIxMDIzOTRjZGZmMzU2
M2MzYzA0YzZjOTIzYmM3NjBmNjFkYjRiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTU4LDYgKzU4LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0
cmF0ZWdpZXMuaD4KQEAgLTIzMCw4ICsyMzEsMTggQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UK
IAogICAgIGlmICghdHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRl
ciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3
aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyIpOwotICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29y
a1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tp
bmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBt
YXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOwotICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaWYgKHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciB8fCAhSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0KHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLnJlcXVl
c3QoKSkpIHsKKyAgICAgICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNv
dXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMs
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJp
bmdUaW1lKHJlc291cmNlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFJlc291cmNlTG9hZGVyID0gJnJl
c291cmNlTG9hZGVyOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6Omlu
dGVyY2VwdFJlcXVlc3QocmVzb3VyY2VMb2FkZXIsIFt0aGlzLCBwcm90ZWN0ZWRSZXNvdXJjZUxv
YWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCByZXNvdXJjZV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNjaGVkdWxl
TG9hZEZyb21OZXR3b3JrUHJvY2VzcygqcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIsICpyZXF1ZXN0
LCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5k
bGVycyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDE3ODhhNDViNzczZDAyNzI2ZTRiYWY0Y2YwZTg0YzdkOTY3YTQwMGIu
LjliZGFhMDVkM2RlYjhlMWJkZDhmZmIwOTZiZDBjNDE5ZjkxMDg5NWIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21haWwu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2Vw
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBO
ZXR3b3JrCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3JrLmludGVyY2Vw
dFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBiZSBjb250aW51ZWQs
IG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2FuIG5vdyBoYXZlCisg
ICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNv
bnRpbnVlLXJlc3BvbnNlLmh0bWw6CisKIDIwMjAtMDUtMTIgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXVtXSzFdIHJlcXVlc3RB
bmltYXRpb25GcmFtZSBkb2Vzbid0IHdvcmsgc2luY2UgcjI0NDE4MiBpbiBBY2NlbGVyYXRlZCBD
b21wb3NpdGluZyBtb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCmluZGV4IGEwMjY0OWQ1NmJkYjNk
Mjg1YzFmMGQ3ZjgwMGNmZTQxMDg5MjI2NDEuLjgzMWE2MWY2Nzg1ZTQ0ODhiMTJkN2RmZGVmMWZl
NjZkMzc1NTEyMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCkBAIC04NywxMiArODcsMTQgQEAg
VGVzdFBhZ2UucnVuVGVzdCA9IHdpbmRvdy5ydW5UZXN0ID0gZnVuY3Rpb24oKQogICAgIGlmICh0
eXBlb2YgdGVzdEZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgIGFsZXJ0KCJGYWls
ZWQgdG8gc2VuZCB0ZXN0KCkgYmVjYXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4iKTsKICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBsZXQgdXJsID0gdGVzdFJ1bm5lci5pbnNwZWN0b3JUZXN0U3R1YlVSTDsKICAgICBpZiAoIXVy
bCkgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIG9idGFpbiBpbnNwZWN0b3IgdGVzdCBzdHVi
IFVSTC4iKTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJbkZyb250
ZW5kKGluaXRpYWxpemVycykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzI0
Yzk2YWQ0MjgzMTFjNWIxZjA3NTlmYzZjOGU3NTZhYzZlMWQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24uCisKKworPT0g
UnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLnNldEludGVyY2VwdGlvbkVuYWJsZWQKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0Q29udGludWUKK1BB
U1M6IFJlc3BvbnNlIGRhdGE6ICd7ImFscGhhIjoiYmV0YSIsImdhbW1hIjoxMjM0NX0nCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0V2l0aFJlcXVl
c3QKK1BBU1M6IHRleHQ6IGludGVyY2VwdGVkIHJlcXVlc3QKKworCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXNwb25zZQorUEFTUzogdGV4
dDogaW50ZXJjZXB0ZWQgZGF0YQorUEFTUzogc3RhdHVzOiAyMDAKK1BBU1M6IHN0YXR1c1RleHQ6
IE9LCitQQVNTOiBtaW1lVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCitQQVNTOiBteS1o
ZWFkZXI6IG15LXZhbHVlCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiByZXF1ZXN0SW50ZXJjZXB0
ZWQuaW50ZXJjZXB0V2l0aFJlc3BvbnNlV2l0aEVycm9yCitQQVNTOiBSZXF1ZXN0IGVycm9yOiAn
UmVxdWVzdCBjYW5jZWxlZCcKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IHRlYXJEb3duCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNhNjg0ODRhZDc1ODJmYTkyYTVmMjQ5YmQwZjc4MmI5NmM2NTViYjYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC5odG1sCkBAIC0wLDAgKzEsMTc3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKworYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKCkgeworICAgIHRyeSB7CisgICAg
ICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJ3Jlc291cmNlcy9kYXRhLmpzb24nKTsK
KyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRleHQ6IGF3YWl0IHJlc3BvbnNlLnRleHQo
KSwKKyAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLAorICAgICAgICAgICAgc3Rh
dHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCwKKyAgICAgICAgICAgIG1pbWVUeXBlOiByZXNw
b25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyksCisgICAgICAgICAgICBoZWFkZXI6IHJl
c3BvbnNlLmhlYWRlcnMuZ2V0KCdteS1oZWFkZXInKQorICAgICAgICB9OworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgcmV0dXJuIGUubWVzc2FnZTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0
aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVBc3luY1N1
aXRlKCJOZXR3b3JrLnNldEludGVyY2VwdGlvbkVuYWJsZWQiKTsKKworICAgIGNvbnN0IFssICwg
e3Jlc3VsdH1dID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICBJbnNwZWN0b3JQcm90b2Nv
bC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZW5hYmxlIiwgcGFyYW1zOiB7fX0pLAor
ICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsu
ZW5hYmxlIiwgcGFyYW1zOiB7fX0pLAorICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENv
bW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAg
IGV4cHJlc3Npb246ICJkb2N1bWVudC5VUkwiCisgICAgICAgIH19KSwKKyAgICAgICAgSW5zcGVj
dG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLnNldEludGVyY2VwdGlv
bkVuYWJsZWQiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKKyAgICAgICAg
fX0pLAorICAgIF0pOworCisgICAgY29uc3QgYmFzZVVSTCA9IHJlc3VsdC52YWx1ZS5zdWJzdHJp
bmcoMCwgcmVzdWx0LnZhbHVlLmxhc3RJbmRleE9mKCIvIikpOworICAgIGNvbnN0IHVybCA9IGJh
c2VVUkwgKyAiL3Jlc291cmNlcy9kYXRhLmpzb24iOworICAgIGF3YWl0IEluc3BlY3RvclByb3Rv
Y29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5hZGRJbnRlcmNlcHRpb24iLCBwYXJh
bXM6IHsgdXJsLCBzdGFnZTogInJlcXVlc3QiIH19KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogInJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRDb250aW51ZSIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBjb250aW51ZSBpbnRlcmNlcHRlZCByZXF1ZXN0
LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5k
IGludGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJlc3VsdFByb21pc2UsIGlu
dGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIElu
c3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIs
IHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCki
CisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29s
LmF3YWl0RXZlbnQoe2V2ZW50OiAiTmV0d29yay5yZXF1ZXN0SW50ZXJjZXB0ZWQifSkKKyAgICAg
ICAgICAgIF0pOworCisgICAgICAgICAgICAvLyBMZXQgdGhlIGxvYWQgY29udGludWUuCisgICAg
ICAgICAgICBjb25zdCBbIGZldGNoUmVzdWx0IF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50
aW1lLmF3YWl0UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNl
T2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUKKyAgICAgICAgICAgICAgICB9fSksCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3
b3JrLmludGVyY2VwdENvbnRpbnVlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkCisgICAgICAgICAgICAg
ICAgfX0pCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJS
ZXNwb25zZSBkYXRhOiAnIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZS50ZXh0LnRyaW0oKSAr
ICInIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogInJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRXaXRoUmVxdWVzdCIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBmdWxmaWxsIGludGVyY2VwdGVkIHJlcXVlc3Qgd2l0
aCByZXNwb25zZS4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgLy8gRmV0
Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAgICBjb25zdCBbZmV0Y2hSZXN1bHRQ
cm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUu
ZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImZl
dGNoRGF0YSgpIgorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVxdWVzdEludGVyY2VwdGVk
In0pCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgLy8gRnVsZmlsbCB0aGUgcmVxdWVz
dCB3aXRoIGRhdGEuCisgICAgICAgICAgICBjb25zdCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQgUHJv
bWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFu
ZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAg
ICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9iamVj
dElkLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlCisgICAgICAgICAg
ICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFu
ZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCIsIHBhcmFtczogeworICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1zLnJlcXVl
c3RJZCwKKyAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwucmVwbGFjZSgnZGF0YS5qc29uJywg
J2RhdGEyLmpzb24nKSwKKyAgICAgICAgICAgICAgICB9fSkKKyAgICAgICAgICAgIF0pOworICAg
ICAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoInRleHQ6ICIgKyBmZXRjaFJlc3VsdC5yZXN1bHQu
dmFsdWUudGV4dCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogInJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRXaXRoUmVzcG9u
c2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZnVsZmlsbCBpbnRlcmNlcHRlZCByZXF1
ZXN0IHdpdGggcmVzcG9uc2UuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAg
IC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAgICAgICAgY29uc3QgW2ZldGNo
UmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJS
dW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Np
b246ICJmZXRjaERhdGEoKSIKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRl
cmNlcHRlZCJ9KQorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIC8vIEZ1bGZpbGwgdGhl
IHJlcXVlc3Qgd2l0aCBkYXRhLgorICAgICAgICAgICAgY29uc3QgW2ZldGNoUmVzdWx0XSA9IGF3
YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2Fp
dENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdhaXRQcm9taXNlIiwgcGFyYW1zOiB7CisgICAg
ICAgICAgICAgICAgICAgIHByb21pc2VPYmplY3RJZDogZmV0Y2hSZXN1bHRQcm9taXNlLnJlc3Vs
dC5vYmplY3RJZCwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZQorICAg
ICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2Fp
dENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlIiwgcGFyYW1z
OiB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJh
bXMucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVy
czogeyAibXktaGVhZGVyIjogIm15LXZhbHVlIiB9LAorICAgICAgICAgICAgICAgICAgICBtaW1l
VHlwZTogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCisgICAgICAgICAgICAgICAgICAgIGNv
bnRlbnQ6IGJ0b2EoImludGVyY2VwdGVkIGRhdGEiKSwKKyAgICAgICAgICAgICAgICAgICAgYmFz
ZTY0RW5jb2RlZDogdHJ1ZQorICAgICAgICAgICAgICAgIH19KQorICAgICAgICAgICAgXSk7Cisg
ICAgICAgICAgICBwcmludEZldGNoUmVzdWx0KGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZSk7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogInJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRXaXRoUmVzcG9uc2VXaXRoRXJyb3IiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgYWJvcnQgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRo
IGVycm9yLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBV
UkwgYW5kIGludGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJlc3VsdFByb21p
c2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFs
dWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hE
YXRhKCkiCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclBy
b3RvY29sLmF3YWl0RXZlbnQoe2V2ZW50OiAiTmV0d29yay5yZXF1ZXN0SW50ZXJjZXB0ZWQifSkK
KyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAvLyBBYm9ydCB0aGUgcmVxdWVzdCBhcyBj
YW5jZWxlZC4KKyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJlc3VsdF0gPSBhd2FpdCBQcm9taXNl
LmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHtt
ZXRob2Q6ICJSdW50aW1lLmF3YWl0UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQs
CisgICAgICAgICAgICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUKKyAgICAgICAgICAgICAg
ICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHtt
ZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZSIsIHBhcmFtczogeworICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1zLnJlcXVlc3RJ
ZCwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlOiAiQ2FuY2VsbGF0aW9uIgorICAgICAg
ICAgICAgICAgIH19KQorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBQcm90b2NvbFRlc3Qu
cGFzcygiUmVxdWVzdCBlcnJvcjogJyIgKyBmZXRjaFJlc3VsdC5yZXN1bHQudmFsdWUgKyAiJyIp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJ0ZWFyRG93biIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBh
d2FpdCBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsucmVt
b3ZlSW50ZXJjZXB0aW9uIiwgcGFyYW1zOiB7IHVybCwgc3RhZ2U6ICJyZXF1ZXN0IiB9fSk7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwor
CisgICAgZnVuY3Rpb24gcHJpbnRGZXRjaFJlc3VsdChyZXN1bHQpCisgICAgeworICAgICAgICBQ
cm90b2NvbFRlc3QucGFzcygidGV4dDogIiArIHJlc3VsdC50ZXh0KTsKKyAgICAgICAgUHJvdG9j
b2xUZXN0LnBhc3MoInN0YXR1czogIiArIHJlc3VsdC5zdGF0dXMpOworICAgICAgICBQcm90b2Nv
bFRlc3QucGFzcygic3RhdHVzVGV4dDogIiArIHJlc3VsdC5zdGF0dXNUZXh0KTsKKyAgICAgICAg
UHJvdG9jb2xUZXN0LnBhc3MoIm1pbWVUeXBlOiAiICsgcmVzdWx0Lm1pbWVUeXBlKTsKKyAgICAg
ICAgUHJvdG9jb2xUZXN0LnBhc3MoIm15LWhlYWRlcjogIiArIHJlc3VsdC5oZWFkZXIpOworICAg
IH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+
VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YTIuanNvbiBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhMi5qc29uCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc4NmNhNDk0YzFkZjM5NmIzZDk4MjE3YzEzOGZiNzE1ODgxZjMyYTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YTIu
anNvbgpAQCAtMCwwICsxIEBACitpbnRlcmNlcHRlZCByZXF1ZXN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399305</attachid>
            <date>2020-05-13 15:29:42 -0700</date>
            <delta_ts>2020-05-14 22:55:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200513152941.patch</filename>
            <type>text/plain</type>
            <size>62147</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTk5NDI3ZDM3MjJjZWNkZDk3YTYxMDkzNGJjODUzZGQ2MGNlNGM2Li41NWIxOTQwN2Y1YjI5MGY0
ZmM5Njc3N2Q0NmQzMzNiMGJhYzY3OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNS0xMiAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRml4IGV4aXN0aW5nIHVz
YWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlNDIGFuZCBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2YTNmNDc4MWFmNjI1ZGY1YTg4OWJiOWJhODkxYmIwZmMxN2E4NjFhLi5jNjVjNmY4M2Y0OTcw
MTViNzk3NTFhMzg1OGU1MzA2NTNiMzliMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAK
KzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAK
KyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJl
cXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZp
ZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAg
J3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVl
c3RJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3Zl
SW50ZXJjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3Bv
bnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0wNS0xMiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3N0ZXIg
c2V0IGFmdGVyIHBsYXliYWNrIGJlZ2lucyBzaG91bGQgYmUgaWdub3JlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggMzhjN2MzMDY0YmVlNzRjOGQyOTExMGRjYzA3NDA3Zjg2Yzk0YjljOS4u
MjA3M2Y3YTc4OWM4MjBlYzI2MDExNGI2ZGI3ZDA2MGU2ODk4YzAzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDUtMTMgIFBhdmVsICA8cGF2ZWwuZmVs
ZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVl
c3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRp
b24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBi
ZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2Fu
IG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVycmlk
ZSk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxSZXNv
dXJjZU92ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXF1
ZXN0SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLl9o
YW5kbGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtP
YnNlcnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKyAgICAgICAgKFdJLk5ldHdv
cmtPYnNlcnZlcik6CisKIDIwMjAtMDUtMTEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5ldHdvcms6IFRpbWluZzogZ2FwcyBhcm91
bmQgdGhlICJSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHRpbWluZyBkYXRhIiBtZXNzYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDE1YTFmYTlhYjRiNTg5OGY0MWM3OTY5NmY3N2IxNGY2MDMwODU5YmIuLjBjZGIxYjIx
MzUyMTg5NmU3N2Q1NDM3ZDNhZDkxYTQwNzk4N2QxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29y
ayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9k
aWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAg
ICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIwLTA1LTEyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsgZHJh
ZyBhbmQgZHJvcCBoYW5kbGluZyBpbiBwcmVwYXJhdGlvbiBmb3IgR1RLNApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgppbmRl
eCA3NzdhNTQxNjZlZDY2NjQ1NjFiM2Y4MjQ5YTZhYmI0YWM1OWQwNDgwLi5hMTY3NzBiYWM0NTY1
YzA0NTlmMTFkNGIyMzIxYjU5ODU0N2UyOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgpAQCAtMTU1LDcgKzE1NSwx
MyBAQAogICAgICAgICAgICAgImlkIjogIk5ldHdvcmtTdGFnZSIsCiAgICAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVudCBzdGFn
ZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKLSAgICAgICAgICAgICJlbnVtIjogWyJyZXNwb25z
ZSJdCisgICAgICAgICAgICAiZW51bSI6IFsicmVxdWVzdCIsICJyZXNwb25zZSJdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJSZXNvdXJjZUVycm9yVHlwZSIsCisg
ICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKKyAgICAgICAgICAgICJl
bnVtIjogWyJHZW5lcmFsIiwgIkFjY2Vzc0NvbnRyb2wiLCAiQ2FuY2VsbGF0aW9uIiwgIlRpbWVv
dXQiXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC0yMzgsNyArMjQ0
LDcgQEAKICAgICAgICAgICAgICJuYW1lIjogImFkZEludGVyY2VwdGlvbiIsCiAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiQWRkIGFuIGludGVyY2VwdGlvbi4iLAogICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJz
dHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJp
bmciLCAiZGVzY3JpcHRpb24iOiAiVVJMIHBhdHRlcm4gdG8gaW50ZXJjZXB0LCBpbnRlcmNlcHQg
ZXZlcnl0aGluZyBpZiBub3Qgc3BlY2lmaWVkIG9yIGVtcHR5IiB9LAogICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiY2FzZVNlbnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBv
ZiBgdXJsYCBwYXJhbWV0ZXIuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdl
eCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
SWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4i
IH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtT
dGFnZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0
aGlzIGFwcGxpZXMgdG8gYWxsIG5ldHdvcmsgc3RhZ2VzLiIgfQpAQCAtMjU2LDIyICsyNjIsMzQg
QEAKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0
Q29udGludWUiLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIGFuIGludGVy
Y2VwdGlvbiB3aXRoIG5vIG1vZGlmaWNhdGlvbnMuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJDb250aW51ZSByZXF1ZXN0IG9yIHJlc3BvbnNlIHdpdGhvdXQgbW9kaWZpY2F0aW9ucy4i
LAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBj
b250aW51ZS4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlJlcGxhY2UgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRlZCBv
bmUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklk
ZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2Ug
dG8gY29udGludWUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWV0aG9kIiwgInR5
cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1
ZXN0IG1ldGhvZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6
ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3Qg
dXJsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJI
ZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ug
aGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEs
IGJhc2U2NC1lbmNvZGVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7
CiAgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRXaXRoUmVzcG9uc2UiLAogICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgcmVzcG9uc2UgY29udGVudCBmb3IgYW4gaW50ZXJj
ZXB0ZWQgcmVzcG9uc2UuIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2Ny
aXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlc3BvbnNl
IHRvIG1vZGlmeS4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50IiwgInR5
cGUiOiAic3RyaW5nIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYmFzZTY0RW5jb2Rl
ZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSwgaWYgY29udGVudCB3
YXMgc2VudCBhcyBiYXNlNjQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVu
dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImJhc2U2NEVuY29kZWQiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNvbnRlbnQgd2FzIHNlbnQgYXMgYmFz
ZTY0LiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1pbWVUeXBlIiwgInR5cGUiOiAi
c3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk1JTUUgVHlwZSBmb3Ig
dGhlIGRhdGEuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzIiwgInR5cGUi
OiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3Bv
bnNlIHN0YXR1cyBjb2RlLiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZp
ZWQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0eXBlIjog
InN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNl
IHN0YXR1cyB0ZXh0LiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQu
IiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRl
cnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFk
ZXJzLiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3Mg
dGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJlcnJvclR5cGUiLCAiJHJlZiI6ICJSZXNvdXJjZUVycm9yVHlwZSIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJEZWxpdmVyIGVycm9yIHJlYXNvbiBmb3Ig
dGhlIHJlcXVlc3QgZmFpbHVyZS4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0s
CkBAIC0zNDgsOSArMzY2LDE3IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXNvdXJj
ZSIsICIkcmVmIjogIkNhY2hlZFJlc291cmNlIiwgImRlc2NyaXB0aW9uIjogIkNhY2hlZCByZXNv
dXJjZSBkYXRhLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJyZXF1ZXN0SW50ZXJjZXB0ZWQiLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXF1ZXN0IGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25kIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250
aW51ZTwvY29kZT4sIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Q8L2NvZGU+YCBv
ciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZTwvY29kZT5gIHRvIHJlc29sdmUg
dGhpcyByZXF1ZXN0LiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlw
dGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3Bv
bmRzIHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2Rl
Pi4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0IiwgIiRyZWYiOiAiUmVx
dWVzdCIsICJkZXNjcmlwdGlvbiI6ICJPcmlnaW5hbCByZXF1ZXN0IGNvbnRlbnQgdGhhdCB3b3Vs
ZCBwcm9jZWVkIGlmIHRoaXMgaXMgY29udGludWVkLiIgfQorICAgICAgICAgICAgXQorICAgICAg
ICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJyZXNwb25zZUludGVyY2VwdGVk
IiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhUVFAgcmVzcG9uc2Ug
aGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0IHJlc3BvbnNlIHdpdGggPGNv
ZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4gb3IgPGNvZGU+TmV0d29yay5pbnRl
cmNlcHRXaXRoUmVzcG9uczwvY29kZT5gIHRvIGNvbnRpbnVlIHRoaXMgcmVzcG9uc2UuIiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJl
ZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0
d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4gb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRX
aXRoUmVzcG9uc2U8L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCiAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJ
ZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0
aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8Y29k
ZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4iIH0sCiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJyZXNwb25zZSIsICIkcmVmIjogIlJlc3BvbnNlIiwgImRlc2NyaXB0aW9uIjog
Ik9yaWdpbmFsIHJlc3BvbnNlIGNvbnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMg
Y29udGludWVkLiIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAwYzQ0MmVlOTA4ODc3ZDIwNjdkNjVlODc0NDE2
NTJhOGNmMDBjODhlLi5kMTBiMzI1NTEzZTJhY2EwNmI3YTM3YTg1NzA4NmFhMTJiYWRjNjkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcApAQCAtODEwLDEwICs4MTAsMTcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJiBjYWMK
ICAgICB9CiB9CiAKLWJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0
UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxJbnRlcmNlcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoYXV0byog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQo
KSkKLSAgICAgICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVx
dWVzdCk7CisgICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVz
dCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlm
IChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdv
cmtBZ2VudCgpKQorICAgICAgICByZXR1cm4gbmV0d29ya0FnZW50LT5zaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0KHJlcXVlc3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtODI0LDYgKzgzMSwx
MiBAQCBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVy
KQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJl
cXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBp
ZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3
b3JrQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAppbmRleCAwM2JkZDU1Y2M5MzBkZTBjZmM2MWY4ZDllNDIxMGY0OTUy
YWE0NjMzLi5jYzcwZTY5M2JiYWU3ZDFjYTdjZDM2ZWRlMTI0ZDBjOWM2MTY5ZDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5j
bHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIK
QEAgLTIzMiw4ICsyMzMsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRBcHBl
YXJhbmNlRGlkQ2hhbmdlKFBhZ2UmLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKTsKICAgICBzdGF0
aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CiAKLSAg
ICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgRnJh
bWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNv
dXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Kik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYs
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC00MzcsOCAr
NDQwLDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGVmYXVsdEFwcGVhcmFuY2VEaWRD
aGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBib29sIHVzZURhcmtBcHBlYXJhbmNlKTsK
ICAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNv
dXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgYm9v
bCB3aWxsSW50ZXJjZXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGlu
dGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtMTI0
OSwxMSArMTI1NCwxOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmCiAgICAgd2lsbERlc3Ryb3lD
YWNoZWRSZXNvdXJjZUltcGwoY2FjaGVkUmVzb3VyY2UpOwogfQogCi1pbmxpbmUgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyhmYWxzZSk7CiAgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm4gd2lsbEludGVy
Y2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKKyAgICAgICAg
cmV0dXJuIHdpbGxJbnRlcmNlcHRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uUHVibGljOjpoYXNGcm9udGVuZHMoKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICBy
ZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJl
cXVlc3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTI2NSw2ICsxMjc4LDEzIEBAIGlu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qq
KT4mJiBoYW5kbGVyKQoreworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNo
b3VsZEludGVyY2VwdFJlcXVlc3QobG9hZGVyLmZyYW1lKCksIHJlcXVlc3QpKTsKKyAgICBpZiAo
YXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShs
b2FkZXIuZnJhbWUoKSkpCisgICAgICAgIGludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50
aW5nQWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDk1NGFhZjEyMWE5ZmE1MDdkODNiYzEwYWUz
N2RlMWYxMjhmN2RjZmMuLjQwNjY4YTFjYjY5ZmI3NzQxNmY4Mjc2ZDlkZGQwMTk4OGU1ZDBiMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC0zMCwxMSArMzAsMjEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxk
SW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoZnJhbWUsIHJlcXVlc3QpOworfQorCiBib29sIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxv
YWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBo
YW5kbGVyKQoreworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVz
dChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBX
VEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBiNjdlODliODBiNGU3YTg1
ODZjYWM4MWFkZTVkNThhMWJjYjBkNDMxLi41NDNmNWIwMzM1YzFlZDZkZDNjNzY1YmIzMWY4MTEz
YzM0NzA2NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwxNCArMzYsMjcgQEAgY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQgewogcHVibGljOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9h
ZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJik7
CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+
JiYpOwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJ
bnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRp
YyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdElu
dGVybmFsKFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlcXVlc3QqKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCitpbmxpbmUgYm9vbCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJh
bWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFs
KCpmcmFtZSwgcmVxdWVzdCk7Cit9CisKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9O
T19GUk9OVEVORFMoZmFsc2UpOwpAQCAtNTMsNiArNjYsMTIgQEAgaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSoKICAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUs
IHJlc3BvbnNlKTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0KGxvYWRlci5mcmFtZSgpLCBsb2FkZXIucmVxdWVzdCgpKSk7CisgICAgaW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShm
cmFtZSwgcmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBhZmNkZDJhN2ZhZmZlMGJl
Yzk4MjA3MmQ4OTRiYzg1YzZlMzBjNDRjLi5kZTkyZmM2ODllZTlhOGMyMGJkMDYzNzVmNDk4MWQw
MmQzMTA3NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUVFBIZWFk
ZXJNYXAuaCIKQEAgLTg0MSwxMiArODQyLDEzIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBtX3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAg
ICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFyKCk7CiAKKyAgICBjb250aW51ZVBlbmRpbmdS
ZXF1ZXN0cygpOwogICAgIGNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpOwogCiAgICAgc2V0UmVz
b3VyY2VDYWNoaW5nRGlzYWJsZWQoZmFsc2UpOwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwpCitib29sIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwsIE5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UpCiB7
CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC04NTUsNiArODU3LDEw
IEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBpbnRlcmNlcHQgOiBtX2lu
dGVyY2VwdHMpIHsKKyAgICAgICAgaWYgKGludGVyY2VwdC5uZXR3b3JrU3RhZ2UgIT0gbmV0d29y
a1N0YWdlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChpbnRlcmNlcHQudXJs
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBhdXRvIHNlYXJj
aFN0cmluZ1R5cGUgPSBpbnRlcmNlcHQuaXNSZWdleCA/IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6
OlNlYXJjaFN0cmluZ1R5cGU6OlJlZ2V4IDogQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNo
U3RyaW5nVHlwZTo6RXhhY3RTdHJpbmc7CiAgICAgICAgIGF1dG8gcmVnZXggPSBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzOjpjcmVhdGVSZWd1bGFyRXhwcmVzc2lvbkZvclNlYXJjaFN0cmluZyhpbnRl
cmNlcHQudXJsLCBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSwgc2VhcmNoU3RyaW5nVHlwZSk7CiAg
ICAgICAgIGlmIChyZWdleC5tYXRjaCh1cmxTdHJpbmcpICE9IC0xKQpAQCAtODY0LDYgKzg3MCwx
NiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29u
dGludWVQZW5kaW5nUmVxdWVzdHMoKQoreworICAgIGZvciAoYXV0byYgcGVuZGluZ1JlcXVlc3Qg
OiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy52YWx1ZXMoKSkgeworICAgICAgICBSZXNvdXJj
ZUxvYWRlciogbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAg
ICBpZiAobG9hZGVyLT5pZGVudGlmaWVyKCkpCisgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdC0+
bV9jb21wbGV0aW9uSGFuZGxlcigmbG9hZGVyLT5yZXF1ZXN0KCkpOworICAgIH0KKyAgICBtX3Bl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5jbGVhcigpOworfQorCiB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVzcG9uc2VzKCkKIHsKICAgICBmb3IgKGF1dG8mIHBl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZSA6IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy52YWx1
ZXMoKSkKQEAgLTEwMjksNjIgKzEwNDUsNjggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNldEludGVyY2VwdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib28KIAog
ICAgIG1faW50ZXJjZXB0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAgICBpZiAoIW1faW50ZXJj
ZXB0aW9uRW5hYmxlZCkKKyAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkgeworICAgICAg
ICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgICAgICBjb250aW51ZVBlbmRpbmdSZXNw
b25zZXMoKTsKKyAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRl
cmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVn
ZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKQordm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5ldHdvcmtTdGFnZVN0
cmluZykKIHsKLSAgICBpZiAobmV0d29ya1N0YWdlU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0
d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtT
dGFnZT4oKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7
Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0
YWdlOiAiX3MsICpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfQotCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKICAgICBpbnRlcmNlcHQu
dXJsID0gdXJsOwogICAgIGlmIChvcHRpb25hbENhc2VTZW5zaXRpdmUpCiAgICAgICAgIGludGVy
Y2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0
aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElzUmVn
ZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisgICAg
aWYgKG9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKSB7CisgICAgICAgIGF1dG8gbmV0d29ya1N0
YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4o
Km9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2Up
IHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3Jr
U3RhZ2U6ICJfcywgKm9wdGlvbmFsTmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnRlcmNlcHQubmV0d29ya1N0YWdlID0gKm5ldHdv
cmtTdGFnZTsKKyAgICB9CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5hcHBlbmRJZk5vdENvbnRh
aW5zKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVyY2VwdCBmb3IgZ2l2
ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVhZHkgZXhpc3RzIl9zOwogfQogCi12b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNp
dGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtT
dGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1vdmVJbnRlcmNlcHRp
b24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9v
bCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxOZXR3b3JrU3RhZ2VTdHJpbmcpCiB7Ci0gICAgaWYgKG5ldHdv
cmtTdGFnZVN0cmluZykgewotICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VTdHJp
bmcpOwotICAgICAgICBpZiAoIW5ldHdvcmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0YWdl
U3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQogICAgIElu
dGVyY2VwdCBpbnRlcmNlcHQ7CiAgICAgaW50ZXJjZXB0LnVybCA9IHVybDsKICAgICBpZiAob3B0
aW9uYWxDYXNlU2Vuc2l0aXZlKQogICAgICAgICBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSA9ICpv
cHRpb25hbENhc2VTZW5zaXRpdmU7CiAgICAgaWYgKG9wdGlvbmFsSXNSZWdleCkKICAgICAgICAg
aW50ZXJjZXB0LmlzUmVnZXggPSAqb3B0aW9uYWxJc1JlZ2V4OwotCi0gICAgLy8gRklYTUU6IFN1
cHBvcnQgaW50ZXJjZXB0aW5nIHJlcXVlc3RzLgorICAgIGlmIChvcHRpb25hbE5ldHdvcmtTdGFn
ZVN0cmluZykgeworICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpvcHRpb25hbE5ldHdvcmtTdGFnZVN0
cmluZyk7CisgICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgICAgICBlcnJvclN0
cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpvcHRpb25hbE5l
dHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9ICpuZXR3b3JrU3RhZ2U7CisgICAgfQogCiAgICAg
aWYgKCFtX2ludGVyY2VwdHMucmVtb3ZlQWxsKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3Ry
aW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlzUmVnZXgi
X3M7CiB9CiAKLWJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0UmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6d2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7Cisg
ICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpS
ZXF1ZXN0KSB8fCBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpS
ZXNwb25zZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNl
cHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1f
aW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpKTsKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJj
ZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCk7CiB9CiAKIGJvb2wgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwOTIsNyArMTExNCwxOCBAQCBib29sIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcAogICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpKTsK
KyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpLCBOZXR3b3JrU3RhZ2U6
OlJlc3BvbnNlKTsKK30KKwordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVyKQoreworICAgIEFTU0VSVChtX2VuYWJsZWQp
OworICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOworCisgICAgU3RyaW5nIHJlcXVl
c3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGxvYWRlci5pZGVudGlmaWVyKCkp
OworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcmNlcHRS
ZXF1ZXN0PigmbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBtX3BlbmRpbmdJbnRlcmNl
cHRSZXF1ZXN0cy5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHBlbmRpbmdSZXF1ZXN0KSk7CisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
JiBoYW5kbGVyKQpAQCAtMTExNCwxNyArMTE0NywxNDAgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LAogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIHsKKyAgICBhdXRv
IHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFr
ZShyZXF1ZXN0SWQpOworICAgIGlmIChwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCkgeworICAgICAg
ICBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxlcigmcGVuZGluZ0lu
dGVyY2VwdFJlcXVlc3QtPm1fbG9hZGVyLT5yZXF1ZXN0KCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRl
cmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwotICAgIGlmICghcGVuZGluZ0ludGVyY2Vw
dFJlc3BvbnNlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRl
cmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICBpZiAocGVuZGluZ0lu
dGVyY2VwdFJlc3BvbnNlKSB7CisgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVz
cG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3Qgb3IgcmVz
cG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKK30KKwordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBTdHJpbmcq
IHVybCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcqIHBvc3REYXRh
KQoreworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0
cy50YWtlKHJlcXVlc3RJZCk7CisgICAgaWYgKHBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJl
c291cmNlTG9hZGVyKiBsb2FkZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7Cisg
ICAgICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgIC8vIERvIG5v
dCB0aHJvdyB1cG9uIGNvbnRpbnVlIG9mIGNhbmNlbGVkIHJlcXVlc3RzLgorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIFNhZmUgdG8gY29uc3QgY2FzdCBhdCB0aGlz
IHBvaW50LCB3ZSBhcmUgb25seSBhZGp1c3RpbmcgdGhlIG1ldGhvZCAvIGhlYWRlcnMgLyBwb3N0
LgorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOwor
ICAgICAgICBpZiAodXJsKQorICAgICAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgKnVy
bCkpOworICAgICAgICBpZiAobWV0aG9kKQorICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCptZXRob2QpOworICAgICAgICBpZiAoaGVhZGVycykgeworICAgICAgICAgICAgSFRUUEhl
YWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6
ICpoZWFkZXJzKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAg
ICAgICAgICAgIGlmIChoZWFkZXIudmFsdWUtPmFzU3RyaW5nKGhlYWRlclZhbHVlKSkKKyAgICAg
ICAgICAgICAgICAgICAgZXhwbGljaXRIZWFkZXJzLmFkZChoZWFkZXIua2V5LCBoZWFkZXJWYWx1
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocG9z
dERhdGEpIHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgICAgICAg
ICBpZiAoIWJhc2U2NERlY29kZSgqcG9zdERhdGEsIGJ1ZmZlcikpIHsKKyAgICAgICAgICAgICAg
ICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZGVjb2RlIGdpdmVuIHBvc3REYXRhIl9zOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlZjxGb3Jt
RGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUEJvZHkoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIH0KKyAgICAgICAgcGVuZGlu
Z1JlcXVlc3QtPm1fY29tcGxldGlvbkhhbmRsZXIoJnJlcXVlc3QpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kV2l0aE9yaWdp
bmFsUmVzcG9uc2UoKTsKKyAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJj
ZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKIH0KIAotdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wg
YmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMs
IGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQor
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcq
IGNvbnRlbnQsIGNvbnN0IGJvb2wqIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5
cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpT
T046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBlcnJvclR5cGVTdHJpbmcpCiB7Cisg
ICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2Uo
cmVxdWVzdElkKTsKKyAgICBpZiAocGVuZGluZ1JlcXVlc3QgJiYgZXJyb3JUeXBlU3RyaW5nKSB7
CisgICAgICAgIFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2Fk
ZXIuZ2V0KCk7CisgICAgICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBhYm9ydCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFk
eSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBhdXRvIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBl
cnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpSZXNvdXJjZUVycm9yVHlwZT4oKmVycm9yVHlwZVN0cmluZyk7CisgICAgICAgIGlmICghZXJy
b3JUeXBlKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmtub3duIGVycm9yIHR5cGUi
X3M7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKKyAgICAgICAgc3dpdGNoIChlcnJvclR5cGUudmFsdWUoKSkgeworICAgICAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpHZW5l
cmFsOgorICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpBY2Nl
c3NDb250cm9sOgorICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJBY2Nlc3MgZGVuaWVkIl9zLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBl
OjpDYW5jZWxsYXRpb246CisgICAgICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JE
b21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwoKSwgIlJlcXVlc3QgY2FuY2VsZWQi
X3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVy
cm9yVHlwZTo6VGltZW91dDoKKyAgICAgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAiUmVxdWVzdCB0aW1lZCBv
dXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2FkZXItPmRpZEZhaWwoZXJy
b3IpOworICAgICAgICBwZW5kaW5nUmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxlcihudWxscHRy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocGVuZGluZ1JlcXVlc3QgJiYgKCFz
dGF0dXMgfHwgIXN0YXR1c1RleHQgfHwgIW1pbWVUeXBlIHx8ICFoZWFkZXJzKSkgeworICAgICAg
ICBlcnJvclN0cmluZyA9ICJzdGF0dXMsIHN0YXR1c1RleHQsIG1pbWVUeXBlIGFuZCBoZWFkZXJz
IG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gZnVsZmlsbGluZyBpbnRlcmNlcHRlZCByZXF1ZXN0Il9z
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChwZW5kaW5nUmVxdWVzdCkgeworICAg
ICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xv
YWRlci5nZXQoKTsKKyAgICAgICAgaWYgKCFsb2FkZXItPmlkZW50aWZpZXIoKSkgeworICAgICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFs
cmVhZHkgYmVlbiBwcm9jZXNzZWQiX3M7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgaWYgKGJhc2U2NEVu
Y29kZWQgJiYgKmJhc2U2NEVuY29kZWQgJiYgY29udGVudCkgeworICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKCpjb250ZW50
LCBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRl
Y29kZSBnaXZlbiBjb250ZW50Il9zOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOworICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnQpCisgICAgICAgICAgICBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC0+dXRmOCgpLmRhdGEoKSwgY29udGVudC0+dXRm
OCgpLmxlbmd0aCgpKTsKKworICAgICAgICAvLyBNaW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9y
IC0gcmVwb3J0IGRpZFJlY2VpdmVSZXNwb25zZSAmIGRpZEZpbmlzaExvYWRpbmcuCisgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLT51cmwo
KSwgKm1pbWVUeXBlLCBkYXRhLT5zaXplKCksIFN0cmluZygpKTsKKyAgICAgICAgcmVzcG9uc2Uu
c2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOwor
ICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgqc3RhdHVzKTsKKyAgICAgICAgcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoKnN0YXR1c1RleHQpOworICAgICAgICBIVFRQSGVhZGVy
TWFwIGV4cGxpY2l0SGVhZGVyczsKKyAgICAgICAgZm9yIChhdXRvJiBoZWFkZXIgOiAqaGVhZGVy
cykgeworICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICAgICAgaWYgKGhl
YWRlci52YWx1ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAgICAgICAgICAgIGV4cGxp
Y2l0SGVhZGVycy5hZGQoaGVhZGVyLmtleSwgaGVhZGVyVmFsdWUpOworICAgICAgICB9CisgICAg
ICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMp
KTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpD
b250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgICAgIGxvYWRlci0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBkYXRhID0gZGF0YS5yZWxlYXNlTm9uTnVs
bCgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAg
ICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShkYXRhKSwgZGF0YS0+c2l6
ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAgbG9hZGVyLT5kaWRG
aW5pc2hMb2FkaW5nKE5ldHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHBlbmRpbmdSZXF1ZXN0LT5tX2NvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBtX3Bl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwogICAgIGlmICghcGVuZGlu
Z0ludGVyY2VwdFJlc3BvbnNlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVu
ZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKQEAgLTExNTIs
MTYgKzEzMDgsMTYgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhS
ZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICB9CiAKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7Ci0gICAgaWYgKGJhc2U2NEVuY29kZWQpIHsK
KyAgICBpZiAoYmFzZTY0RW5jb2RlZCAmJiAqYmFzZTY0RW5jb2RlZCAmJiBjb250ZW50KSB7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgICAgIGlmICghYmFzZTY0RGVjb2Rl
KGNvbnRlbnQsIGJ1ZmZlcikpIHsKKyAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKmNvbnRlbnQs
IGJ1ZmZlcikpIHsKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUg
Z2l2ZW4gY29udGVudCJfczsKICAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+
cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5ndGgo
KSk7CisgICAgfSBlbHNlIGlmIChjb250ZW50KQorICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LT51dGY4KCkuZGF0YSgpLCBjb250ZW50LT51dGY4KCku
bGVuZ3RoKCkpOwogCiAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kKG92ZXJy
aWRlUmVzcG9uc2UsIG92ZXJyaWRlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBiZmQxMzFl
OWI1ODU2Yzg0ZGE3NzI0ODA1ZTcxMzk3YjdjNzQ4NmE5Li41ODY0NTIzNDU0ZmE4NTNhMjVkMWUw
OGExMDgxYzk2YzYxNDIwYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTkxLDcgKzkxLDggQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNv
bnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUlu
dGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBj
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtT
dGFnZVN0cmluZykgZmluYWw7CiAgICAgdm9pZCBpbnRlcmNlcHRDb250aW51ZShFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKSBmaW5hbDsKLSAgICB2b2lkIGludGVyY2VwdFdp
dGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlw
ZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBoZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXF1ZXN0
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogbWV0
aG9kLCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcqIHBvc3REYXRhKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25z
ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIGNv
bnRlbnQsIGNvbnN0IGJvb2wqIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUs
IGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046
Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBlcnJvclR5cGUpIGZpbmFsOwogCiAgICAg
Ly8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHls
ZSgpOwpAQCAtMTE4LDkgKzExOSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWluRnJhbWVOYXZp
Z2F0ZWQoRG9jdW1lbnRMb2FkZXImKTsKICAgICB2b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwog
ICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKLSAgICBi
b29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIGJv
b2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHNob3Vs
ZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBp
bnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChS
ZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Kik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFy
cjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwogICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKTsKQEAg
LTE0MCw3ICsxNDMsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEluc3BlY3RvclBhZ2VB
Z2VudDo6UmVzb3VyY2VUeXBlKTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCk7Cisg
ICAgdXNpbmcgTmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0
d29ya1N0YWdlOworICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCwgTmV0d29ya1N0YWdlKTsK
KyAgICB2b2lkIGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBjb250aW51ZVBl
bmRpbmdSZXNwb25zZXMoKTsKIAogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElk
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKQEAgLTE1Myw2ICsxNTgsMjAgQEAgcHJpdmF0ZToK
IAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAorICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRS
ZXF1ZXN0IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJl
cXVlc3QpOworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgICAgICAgICA6IG1fbG9hZGVyKGxvYWRlcikKKyAgICAgICAgICAgICwg
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAg
eyB9CisKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QoKSA9IGRlZmF1bHQ7CisgICAg
ICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CisgICAgICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+IG1fY29tcGxldGlvbkhhbmRsZXI7
CisgICAgfTsKKwogICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMjA0LDE1ICsyMjMsMTggQEAgcHJpdmF0ZToK
ICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlIHsgdHJ1ZSB9
OwogICAgICAgICBib29sIGlzUmVnZXggeyBmYWxzZSB9OworICAgICAgICBOZXR3b3JrU3RhZ2Ug
bmV0d29ya1N0YWdlIHsgTmV0d29ya1N0YWdlOjpSZXNwb25zZSB9OwogCiAgICAgICAgIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZXJjZXB0JiBvdGhlcikgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIHVybCA9PSBvdGhlci51cmwKICAgICAgICAgICAgICAgICAm
JiBjYXNlU2Vuc2l0aXZlID09IG90aGVyLmNhc2VTZW5zaXRpdmUKLSAgICAgICAgICAgICAgICAm
JiBpc1JlZ2V4ID09IG90aGVyLmlzUmVnZXg7CisgICAgICAgICAgICAgICAgJiYgaXNSZWdleCA9
PSBvdGhlci5pc1JlZ2V4CisgICAgICAgICAgICAgICAgJiYgbmV0d29ya1N0YWdlID09IG90aGVy
Lm5ldHdvcmtTdGFnZTsKICAgICAgICAgfQogICAgIH07CiAgICAgVmVjdG9yPEludGVyY2VwdD4g
bV9pbnRlcmNlcHRzOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGlu
Z0ludGVyY2VwdFJlcXVlc3Q+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0czsKICAgICBIYXNo
TWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZT4+IG1f
cGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlczsKIAogICAgIC8vIEZJWE1FOiBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQgc2hvdWxkIG5vdCBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMjMxZWRlYzhjY2M3MWQ2NTIxNzEwNjM2M2Y1Y2MzNDk5MGExNjQ3ZS4uNjU5ZTJm
ZTg5MDdiMzE1OTc2NjBhN2RkYzQ4Yjk0NWQzM2YwZjVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NDYsNyAr
ODQ2LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKIAogICAgIHJlcXVlc3QudXBkYXRlUmVm
ZXJyZXJQb2xpY3koZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgOiBS
ZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3duZ3JhZGUpOwogCi0gICAgaWYgKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoJmZyYW1lLCByZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW50ZXJjZXB0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAg
IHJlcXVlc3Quc2V0Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcp
OwogCiAgICAgYXV0byYgcGFnZSA9ICpmcmFtZS5wYWdlKCk7CkBAIC0xNDM2LDcgKzE0MzYsNyBA
QCBWZWN0b3I8UmVmPFNWR0ltYWdlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmFsbENhY2hlZFNW
R0ltYWdlcygpIGNvbnN0CiAKIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAg
aWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoZnJhbWUo
KSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEludGVyY2VwdChmcmFtZSgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
KSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCAi
SW5zcGVjdG9yIGludGVyY2VwdCJfcyB9KTsKIAogICAgIGlmIChyZXF1ZXN0LmNoYXJzZXQoKS5p
c0VtcHR5KCkgJiYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdCB8fCB0eXBl
ID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5h
Z2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
TmV0d29ya01hbmFnZXIuanMKaW5kZXggMWM4MTI2MGQ4ZGIyMzQ4YzAwYmZlZDk1YjdiYzcwMjAx
NTAwYzVkZS4uNWE2ZGQyMjc4ZmRjNGNkNTNmNTM4OTRlMjg0ZjUwNTZlMjA0ZGY2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0
d29ya01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMKQEAgLTE2MSw3ICsxNjEsNyBAQCBXSS5OZXR3
b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUudXJsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGxvY2FsUmVzb3VyY2VP
dmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNS
ZWdleDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV0d29ya1N0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3
b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IElu
c3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CkBAIC0zNjQsNyArMzY0LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3
b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxS
ZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2Nh
bFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVn
ZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdv
cmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3Bv
bnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29y
ay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIC8v
IENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogTmV0d29yay5hZGRJbnRlcmNlcHRpb24gZGlkIG5v
dCBleGlzdC4KQEAgLTM5Nyw3ICszOTcsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5l
dHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgdXJsOiBsb2Nh
bFJlc291cmNlT3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGxv
Y2FsUmVzb3VyY2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAgICAgICAgICAgICAgaXNS
ZWdleDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICAgICAgbmV0
d29ya1N0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVz
cG9uc2UsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3
b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAg
Ly8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlvbiBk
aWQgbm90IGV4aXN0LgpAQCAtOTA2LDkgKzkwNiw5IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xh
c3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VSZXF1ZXN0SWRlbnRpZmllck1hcC5kZWxldGUocmVxdWVzdElkZW50aWZpZXIpOwogICAgIH0K
IAotICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKQor
ICAgIHJlcXVlc3RJbnRlcmNlcHRlZCh0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdCkKICAgICB7
Ci0gICAgICAgIGxldCB1cmwgPSBXSS51cmxXaXRob3V0RnJhZ21lbnQocmVzcG9uc2UudXJsKTsK
KyAgICAgICAgbGV0IHVybCA9IFdJLnVybFdpdGhvdXRGcmFnbWVudChyZXF1ZXN0LnVybCk7CiAg
ICAgICAgIGxldCBsb2NhbFJlc291cmNlT3ZlcnJpZGUgPSB0aGlzLmxvY2FsUmVzb3VyY2VPdmVy
cmlkZUZvclVSTCh1cmwpOwogICAgICAgICBpZiAoIWxvY2FsUmVzb3VyY2VPdmVycmlkZSB8fCBs
b2NhbFJlc291cmNlT3ZlcnJpZGUuZGlzYWJsZWQpIHsKICAgICAgICAgICAgIHRhcmdldC5OZXR3
b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUocmVxdWVzdElkKTsKQEAgLTkyNywxMSArOTI3LDEx
IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgY29uc29sZS5hc3NlcnQocmV2aXNpb24ubWltZVR5cGUgPT09IGxvY2Fs
UmVzb3VyY2UubWltZVR5cGUpOwogCiAgICAgICAgIGlmIChpc05hTihzdGF0dXNDb2RlKSkKLSAg
ICAgICAgICAgIHN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBzdGF0dXNDb2Rl
ID0gMjAwOwogICAgICAgICBpZiAoIXN0YXR1c1RleHQpCi0gICAgICAgICAgICBzdGF0dXNUZXh0
ID0gdW5kZWZpbmVkOworICAgICAgICAgICAgc3RhdHVzVGV4dCA9ICJPSyI7CiAgICAgICAgIGlm
ICghcmVzcG9uc2VIZWFkZXJzKQotICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzID0gdW5kZWZp
bmVkOworICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzID0ge307CiAKICAgICAgICAgdGFyZ2V0
Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVzcG9uc2UocmVxdWVzdElkLCBjb250ZW50LCBi
YXNlNjRFbmNvZGVkLCBtaW1lVHlwZSwgc3RhdHVzQ29kZSwgc3RhdHVzVGV4dCwgcmVzcG9uc2VI
ZWFkZXJzKTsKICAgICB9CkBAIC0xMzc3LDcgKzEzNzcsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9
IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB1cmw6
IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBs
b2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgaXNSZWdl
eDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICBuZXR3b3JrU3Rh
Z2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwK
KyAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3Jr
U3RhZ2UuUmVxdWVzdCwKICAgICAgICAgfTsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChp
T1MgMTMuMCk6IE5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIC8gTmV0d29yay5yZW1vdmVJbnRlcmNl
cHRpb24gZGlkIG5vdCBleGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcwppbmRleCA1
OWMyOWM5YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgwMGFhLi5hMmJjNDNjMmM1MGUxZDll
OWZlNzBkODljNGE2Y2E2YzAzMmFhZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpz
CkBAIC0xMDgsOCArMTA4LDggQEAgV0kuTmV0d29ya09ic2VydmVyID0gY2xhc3MgTmV0d29ya09i
c2VydmVyIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5EaXNwYXRjaGVyCiAgICAgICAgIC8vIEZJ
WE1FOiBOb3QgaW1wbGVtZW50ZWQuCiAgICAgfQogCi0gICAgcmVzcG9uc2VJbnRlcmNlcHRlZChy
ZXF1ZXN0SWQsIHJlc3BvbnNlKQorICAgIHJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIHJl
cXVlc3QpCiAgICAgewotICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNwb25zZUludGVyY2Vw
dGVkKHRoaXMuX3RhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSk7CisgICAgICAgIFdJLm5ldHdv
cmtNYW5hZ2VyLnJlcXVlc3RJbnRlcmNlcHRlZCh0aGlzLl90YXJnZXQsIHJlcXVlc3RJZCwgcmVx
dWVzdCk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBiOGRjY2FkMmMyY2Y4ZDAwMDE0MDA0
MDdjYWNhNmUyN2IxZjg4MjQ5Li4yMTAyMzk0Y2RmZjM1NjNjM2MwNGM2YzkyM2JjNzYwZjYxZGI0
YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBAIC0yMzAsOCAr
MjMxLDE4IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxv
YWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAoIXRyeUxvYWRpbmdV
c2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykp
IHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2No
ZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mi
KTsKLSAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVy
LCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVz
b3VyY2UpKTsKLSAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci5v
cHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfHwgIUluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXNvdXJjZUxv
YWRlci5mcmFtZSgpLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkpKSB7CisgICAgICAgICAgICBz
Y2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFJlc291cmNlTG9h
ZGVyPiBwcm90ZWN0ZWRSZXNvdXJjZUxvYWRlciA9ICZyZXNvdXJjZUxvYWRlcjsKKyAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNl
TG9hZGVyLCBbdGhpcywgcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVy
cywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcmVzb3VyY2VdKGNv
bnN0IFJlc291cmNlUmVxdWVzdCogcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
cmVxdWVzdCkKKyAgICAgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3Mo
KnByb3RlY3RlZFJlc291cmNlTG9hZGVyLCAqcmVxdWVzdCwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBz
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5n
VGltZShyZXNvdXJjZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9KTsKICAgICB9
CiAKICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVs
ZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMiKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNzg4YTQ1
Yjc3M2QwMjcyNmU0YmFmNGNmMGU4NGM3ZDk2N2E0MDBiLi45YmRhYTA1ZDNkZWI4ZTFiZGQ4ZmZi
MDk2YmQwYzQxOWY5MTA4OTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDItMjkgIFBh
dmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0
d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yaworICAgICAgICBwcm90b2Nv
bCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRp
b24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQu
IE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdy
ZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL3Byb3RvY29sLXRlc3QuanM6CisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
bmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sOgor
CiAyMDIwLTA1LTEyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtXaW5DYWlyb11bV0sxXSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZG9lc24ndCB3
b3JrIHNpbmNlIHIyNDQxODIgaW4gQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmcgbW9kZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29s
LXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJv
dG9jb2wtdGVzdC5qcwppbmRleCBhMDI2NDlkNTZiZGIzZDI4NWMxZjBkN2Y4MDBjZmU0MTA4OTIy
NjQxLi44MzFhNjFmNjc4NWU0NDg4YjEyZDdkZmRlZjFmZTY2ZDM3NTUxMjIyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVz
dC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJv
dG9jb2wtdGVzdC5qcwpAQCAtODcsMTIgKzg3LDE0IEBAIFRlc3RQYWdlLnJ1blRlc3QgPSB3aW5k
b3cucnVuVGVzdCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodHlwZW9mIHRlc3RGdW5jdGlvbiAhPT0g
ImZ1bmN0aW9uIikgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHNlbmQgdGVzdCgpIGJlY2F1
c2UgaXQgaXMgbm90IGEgZnVuY3Rpb24uIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbGV0IHVybCA9IHRlc3RSdW5uZXIu
aW5zcGVjdG9yVGVzdFN0dWJVUkw7CiAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgYWxlcnQoIkZh
aWxlZCB0byBvYnRhaW4gaW5zcGVjdG9yIHRlc3Qgc3R1YiBVUkwuIik7CiAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZnVuY3Rp
b24gcnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZChpbml0aWFsaXplcnMpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMyNGM5NmFkNDI4MzExYzViMWYwNzU5ZmM2
YzhlNzU2YWM2ZTFkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitU
ZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0
d29yay5zZXRJbnRlcmNlcHRpb25FbmFibGVkCistLSBSdW5uaW5nIHRlc3QgY2FzZTogcmVxdWVz
dEludGVyY2VwdGVkLmludGVyY2VwdENvbnRpbnVlCitQQVNTOiBSZXNwb25zZSBkYXRhOiAneyJh
bHBoYSI6ImJldGEiLCJnYW1tYSI6MTIzNDV9JworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogcmVx
dWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXF1ZXN0CitQQVNTOiB0ZXh0OiBpbnRlcmNl
cHRlZCByZXF1ZXN0CisKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IHJlcXVlc3RJbnRlcmNlcHRl
ZC5pbnRlcmNlcHRXaXRoUmVzcG9uc2UKK1BBU1M6IHRleHQ6IGludGVyY2VwdGVkIGRhdGEKK1BB
U1M6IHN0YXR1czogMjAwCitQQVNTOiBzdGF0dXNUZXh0OiBPSworUEFTUzogbWltZVR5cGU6IGFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbQorUEFTUzogbXktaGVhZGVyOiBteS12YWx1ZQorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXNwb25z
ZVdpdGhFcnJvcgorUEFTUzogUmVxdWVzdCBlcnJvcjogJ1JlcXVlc3QgY2FuY2VsZWQnCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiB0ZWFyRG93bgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTY4NDg0
YWQ3NTgyZmE5MmE1ZjI0OWJkMGY3ODJiOTZjNjU1YmI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbApAQCAtMCww
ICsxLDE3NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0
aW9uIGZldGNoRGF0YSgpIHsKKyAgICB0cnkgeworICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3
YWl0IGZldGNoKCdyZXNvdXJjZXMvZGF0YS5qc29uJyk7CisgICAgICAgIHJldHVybiB7CisgICAg
ICAgICAgICB0ZXh0OiBhd2FpdCByZXNwb25zZS50ZXh0KCksCisgICAgICAgICAgICBzdGF0dXM6
IHJlc3BvbnNlLnN0YXR1cywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1
c1RleHQsCisgICAgICAgICAgICBtaW1lVHlwZTogcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRl
bnQtdHlwZScpLAorICAgICAgICAgICAgaGVhZGVyOiByZXNwb25zZS5oZWFkZXJzLmdldCgnbXkt
aGVhZGVyJykKKyAgICAgICAgfTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiBl
Lm1lc3NhZ2U7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQg
c3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5zZXRJbnRlcmNl
cHRpb25FbmFibGVkIik7CisKKyAgICBjb25zdCBbLCAsIHtyZXN1bHR9XSA9IGF3YWl0IFByb21p
c2UuYWxsKFsKKyAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6
ICJSdW50aW1lLmVuYWJsZSIsIHBhcmFtczoge319KSwKKyAgICAgICAgSW5zcGVjdG9yUHJvdG9j
b2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmVuYWJsZSIsIHBhcmFtczoge319KSwK
KyAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1l
LmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICBleHByZXNzaW9uOiAiZG9jdW1lbnQu
VVJMIgorICAgICAgICB9fSksCisgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFu
ZCh7bWV0aG9kOiAiTmV0d29yay5zZXRJbnRlcmNlcHRpb25FbmFibGVkIiwgcGFyYW1zOiB7Cisg
ICAgICAgICAgICBlbmFibGVkOiB0cnVlCisgICAgICAgIH19KSwKKyAgICBdKTsKKworICAgIGNv
bnN0IGJhc2VVUkwgPSByZXN1bHQudmFsdWUuc3Vic3RyaW5nKDAsIHJlc3VsdC52YWx1ZS5sYXN0
SW5kZXhPZigiLyIpKTsKKyAgICBjb25zdCB1cmwgPSBiYXNlVVJMICsgIi9yZXNvdXJjZXMvZGF0
YS5qc29uIjsKKyAgICBhd2FpdCBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhv
ZDogIk5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIiwgcGFyYW1zOiB7IHVybCwgc3RhZ2U6ICJyZXF1
ZXN0IiB9fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJyZXF1
ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0Q29udGludWUiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlRlc3QgY29udGludWUgaW50ZXJjZXB0ZWQgcmVxdWVzdC4iLAorICAgICAgICBhc3luYyB0ZXN0
KCkgeworICAgICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAg
ICAgICBjb25zdCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0
IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENv
bW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAg
ICAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIgorICAgICAgICAgICAgICAgIH19KSwK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5l
dHdvcmsucmVxdWVzdEludGVyY2VwdGVkIn0pCisgICAgICAgICAgICBdKTsKKworICAgICAgICAg
ICAgLy8gTGV0IHRoZSBsb2FkIGNvbnRpbnVlLgorICAgICAgICAgICAgY29uc3QgWyBmZXRjaFJl
c3VsdCBdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclBy
b3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBwYXJh
bXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFBy
b21pc2UucmVzdWx0Lm9iamVjdElkLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZhbHVl
OiB0cnVlCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclBy
b3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIs
IHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZl
bnQucGFyYW1zLnJlcXVlc3RJZAorICAgICAgICAgICAgICAgIH19KQorICAgICAgICAgICAgXSk7
CisgICAgICAgICAgICBQcm90b2NvbFRlc3QucGFzcygiUmVzcG9uc2UgZGF0YTogJyIgKyBmZXRj
aFJlc3VsdC5yZXN1bHQudmFsdWUudGV4dC50cmltKCkgKyAiJyIpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJyZXF1ZXN0SW50
ZXJjZXB0ZWQuaW50ZXJjZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRl
c3QgZnVsZmlsbCBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggcmVzcG9uc2UuIiwKKyAgICAgICAg
YXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0
LgorICAgICAgICAgICAgY29uc3QgW2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVu
dF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9j
b2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoKSIKKyAgICAgICAgICAg
ICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7
ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KQorICAgICAgICAgICAgXSk7CisK
KyAgICAgICAgICAgIC8vIEZ1bGZpbGwgdGhlIHJlcXVlc3Qgd2l0aCBkYXRhLgorICAgICAgICAg
ICAgY29uc3QgW2ZldGNoUmVzdWx0XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdh
aXRQcm9taXNlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VPYmplY3RJ
ZDogZmV0Y2hSZXN1bHRQcm9taXNlLnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZQorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50
ZXJjZXB0V2l0aFJlcXVlc3QiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dElkOiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAg
ICAgIHVybDogdXJsLnJlcGxhY2UoJ2RhdGEuanNvbicsICdkYXRhMi5qc29uJyksCisgICAgICAg
ICAgICAgICAgfX0pCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5w
YXNzKCJ0ZXh0OiAiICsgZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlLnRleHQpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJyZXF1
ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0V2l0aFJlc3BvbnNlIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJUZXN0IGZ1bGZpbGwgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHJlc3BvbnNlLiIsCisg
ICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5kIGludGVy
Y2VwdCBpdC4KKyAgICAgICAgICAgIGNvbnN0IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2Vw
dGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFt
czogeworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiCisgICAg
ICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0
RXZlbnQoe2V2ZW50OiAiTmV0d29yay5yZXF1ZXN0SW50ZXJjZXB0ZWQifSkKKyAgICAgICAgICAg
IF0pOworCisgICAgICAgICAgICAvLyBGdWxmaWxsIHRoZSByZXF1ZXN0IHdpdGggZGF0YS4KKyAg
ICAgICAgICAgIGNvbnN0IFtmZXRjaFJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50
aW1lLmF3YWl0UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNl
T2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUKKyAgICAgICAgICAgICAgICB9fSksCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3
b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1zLnJlcXVlc3RJZCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6
ICJPSyIsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgIm15LWhlYWRlciI6ICJteS12
YWx1ZSIgfSwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0iLAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBidG9hKCJpbnRlcmNlcHRl
ZCBkYXRhIiksCisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IHRydWUKKyAgICAg
ICAgICAgICAgICB9fSkKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgcHJpbnRGZXRjaFJl
c3VsdChmZXRjaFJlc3VsdC5yZXN1bHQudmFsdWUpOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJyZXF1ZXN0SW50ZXJjZXB0ZWQu
aW50ZXJjZXB0V2l0aFJlc3BvbnNlV2l0aEVycm9yIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJU
ZXN0IGFib3J0IGludGVyY2VwdGVkIHJlcXVlc3Qgd2l0aCBlcnJvci4iLAorICAgICAgICBhc3lu
YyB0ZXN0KCkgeworICAgICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisg
ICAgICAgICAgICBjb25zdCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9
IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5h
d2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAg
ICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIgorICAgICAgICAgICAgICAg
IH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVu
dDogIk5ldHdvcmsucmVxdWVzdEludGVyY2VwdGVkIn0pCisgICAgICAgICAgICBdKTsKKworICAg
ICAgICAgICAgLy8gQWJvcnQgdGhlIHJlcXVlc3QgYXMgY2FuY2VsZWQuCisgICAgICAgICAgICBj
b25zdCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAg
IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFBy
b21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBm
ZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9iamVjdElkLAorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm5CeVZhbHVlOiB0cnVlCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAg
IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNl
cHRXaXRoUmVzcG9uc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElk
OiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAg
IGVycm9yVHlwZTogIkNhbmNlbGxhdGlvbiIKKyAgICAgICAgICAgICAgICB9fSkKKyAgICAgICAg
ICAgIF0pOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoIlJlcXVlc3QgZXJyb3I6ICci
ICsgZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlICsgIiciKTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAidGVhckRvd24iLAorICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yUHJvdG9jb2wu
YXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlvbiIsIHBhcmFt
czogeyB1cmwsIHN0YWdlOiAicmVxdWVzdCIgfX0pOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKKworICAgIGZ1bmN0aW9uIHByaW50RmV0
Y2hSZXN1bHQocmVzdWx0KQorICAgIHsKKyAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoInRleHQ6
ICIgKyByZXN1bHQudGV4dCk7CisgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJzdGF0dXM6ICIg
KyByZXN1bHQuc3RhdHVzKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoInN0YXR1c1RleHQ6
ICIgKyByZXN1bHQuc3RhdHVzVGV4dCk7CisgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJtaW1l
VHlwZTogIiArIHJlc3VsdC5taW1lVHlwZSk7CisgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJt
eS1oZWFkZXI6ICIgKyByZXN1bHQuaGVhZGVyKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRp
b24uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEyLmpzb24gYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvZGF0YTIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODZjYTQ5NGMxZGYzOTZi
M2Q5ODIxN2MxMzhmYjcxNTg4MWYzMmE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEyLmpzb24KQEAgLTAsMCArMSBAQAoraW50
ZXJjZXB0ZWQgcmVxdWVzdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399457</attachid>
            <date>2020-05-14 22:55:09 -0700</date>
            <delta_ts>2020-05-15 11:18:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200514225509.patch</filename>
            <type>text/plain</type>
            <size>65360</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTk5NDI3ZDM3MjJjZWNkZDk3YTYxMDkzNGJjODUzZGQ2MGNlNGM2Li41NWIxOTQwN2Y1YjI5MGY0
ZmM5Njc3N2Q0NmQzMzNiMGJhYzY3OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNS0xMiAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRml4IGV4aXN0aW5nIHVz
YWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlNDIGFuZCBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2YTNmNDc4MWFmNjI1ZGY1YTg4OWJiOWJhODkxYmIwZmMxN2E4NjFhLi5jNjVjNmY4M2Y0OTcw
MTViNzk3NTFhMzg1OGU1MzA2NTNiMzliMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAK
KzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAK
KyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJl
cXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZp
ZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAg
J3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVl
c3RJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3Zl
SW50ZXJjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3Bv
bnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0wNS0xMiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3N0ZXIg
c2V0IGFmdGVyIHBsYXliYWNrIGJlZ2lucyBzaG91bGQgYmUgaWdub3JlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggMzhjN2MzMDY0YmVlNzRjOGQyOTExMGRjYzA3NDA3Zjg2Yzk0YjljOS4u
MjA3M2Y3YTc4OWM4MjBlYzI2MDExNGI2ZGI3ZDA2MGU2ODk4YzAzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDUtMTMgIFBhdmVsICA8cGF2ZWwuZmVs
ZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVl
c3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRp
b24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBi
ZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2Fu
IG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVycmlk
ZSk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxSZXNv
dXJjZU92ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXF1
ZXN0SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLl9o
YW5kbGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtP
YnNlcnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKyAgICAgICAgKFdJLk5ldHdv
cmtPYnNlcnZlcik6CisKIDIwMjAtMDUtMTEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5ldHdvcms6IFRpbWluZzogZ2FwcyBhcm91
bmQgdGhlICJSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHRpbWluZyBkYXRhIiBtZXNzYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDE1YTFmYTlhYjRiNTg5OGY0MWM3OTY5NmY3N2IxNGY2MDMwODU5YmIuLjBjZGIxYjIx
MzUyMTg5NmU3N2Q1NDM3ZDNhZDkxYTQwNzk4N2QxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29y
ayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9k
aWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAg
ICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIwLTA1LTEyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsgZHJh
ZyBhbmQgZHJvcCBoYW5kbGluZyBpbiBwcmVwYXJhdGlvbiBmb3IgR1RLNApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgppbmRl
eCA3NzdhNTQxNjZlZDY2NjQ1NjFiM2Y4MjQ5YTZhYmI0YWM1OWQwNDgwLi44YmNjMmQxYmUxNWYz
NWZiNDY5ZTExYmY3OTM3YmUwODFhMjliNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgpAQCAtMTU1LDcgKzE1NSwx
MyBAQAogICAgICAgICAgICAgImlkIjogIk5ldHdvcmtTdGFnZSIsCiAgICAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVudCBzdGFn
ZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKLSAgICAgICAgICAgICJlbnVtIjogWyJyZXNwb25z
ZSJdCisgICAgICAgICAgICAiZW51bSI6IFsicmVxdWVzdCIsICJyZXNwb25zZSJdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJSZXNvdXJjZUVycm9yVHlwZSIsCisg
ICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKKyAgICAgICAgICAgICJl
bnVtIjogWyJHZW5lcmFsIiwgIkFjY2Vzc0NvbnRyb2wiLCAiQ2FuY2VsbGF0aW9uIiwgIlRpbWVv
dXQiXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC0yMzgsMTAgKzI0
NCwxMCBAQAogICAgICAgICAgICAgIm5hbWUiOiAiYWRkSW50ZXJjZXB0aW9uIiwKICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJBZGQgYW4gaW50ZXJjZXB0aW9uLiIsCiAgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjog
InN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0
cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgcGF0dGVybiB0byBpbnRlcmNlcHQsIGludGVyY2Vw
dCBldmVyeXRoaW5nIGlmIG5vdCBzcGVjaWZpZWQgb3IgZW1wdHkiIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJkZXNjcmlwdGlv
biI6ICJTdGFnZSB0byBpbnRlcmNlcHQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Y2FzZVNlbnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJh
bWV0ZXIuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjog
ImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJl
YXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0sCi0gICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0aGlzIGFwcGxpZXMg
dG8gYWxsIG5ldHdvcmsgc3RhZ2VzLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNS
ZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lv
bi4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMjQ5LDE2ICsy
NTUsMjggQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZW1vdmUgYW4gaW50ZXJjZXB0
aW9uLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdl
IHRvIGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0
aXZlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJJZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0s
Ci0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAg
cGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0
d29yayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5
cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVl
LCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAg
ICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJp
bnRlcmNlcHRDb250aW51ZSIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udGludWUg
YW4gaW50ZXJjZXB0aW9uIHdpdGggbm8gbW9kaWZpY2F0aW9ucy4iLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkNvbnRpbnVlIHJlcXVlc3Qgb3IgcmVzcG9uc2Ugd2l0aG91dCBtb2RpZmlj
YXRpb25zLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6
ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXF1ZXN0IG9yIHJlc3Bv
bnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwg
IiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGNvbnRpbnVl
LiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAi
bmFtZSI6ICJpbnRlcmNlcHRXaXRoUmVxdWVzdCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUmVwbGFjZSBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggdGhlIHByb3ZpZGVkIG9uZS4iLAog
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250
aW51ZS4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjog
IlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0
ZWQgTmV0d29yayByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm1ldGhvZCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsImRlc2NyaXB0aW9uIjogIkhUVFAgcmVxdWVzdCBtZXRob2QuIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1
ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBvcmln
aW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJwb3N0RGF0YSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJIVFRQIFBPU1QgcmVxdWVzdCBkYXRhLCBiYXNlNjQtZW5jb2RlZC4iIH0KICAgICAg
ICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMjY2LDEyICsyODQsMTMgQEAKICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm92aWRlIHJlc3BvbnNlIGNvbnRlbnQgZm9yIGFu
IGludGVyY2VwdGVkIHJlc3BvbnNlLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIs
ICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayBy
ZXNwb25zZSB0byBtb2RpZnkuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVu
dCIsICJ0eXBlIjogInN0cmluZyIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2
NEVuY29kZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNv
bnRlbnQgd2FzIHNlbnQgYXMgYmFzZTY0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImNvbnRlbnQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJiYXNlNjRFbmNvZGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUcnVlLCBpZiBjb250ZW50IHdhcyBzZW50
IGFzIGJhc2U2NC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtaW1lVHlwZSIsICJ0
eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJNSU1FIFR5
cGUgZm9yIHRoZSBkYXRhLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1cyIs
ICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRU
UCByZXNwb25zZSBzdGF0dXMgY29kZS4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1
bm1vZGlmaWVkLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1c1RleHQiLCAi
dHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCBy
ZXNwb25zZSBzdGF0dXMgdGV4dC4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1v
ZGlmaWVkLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6
ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9u
c2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIg
fQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMi
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJz
LiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAorICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JUeXBlIiwgIiRyZWYiOiAiUmVzb3VyY2VFcnJvclR5
cGUiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRGVsaXZlciBlcnJvciByZWFz
b24gZm9yIHRoZSByZXF1ZXN0IGZhaWx1cmUuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0K
ICAgICBdLApAQCAtMzQ4LDkgKzM2NywxNyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNoZWRSZXNvdXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNo
ZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdEludGVyY2VwdGVkIiwKKyAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhUVFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNl
cHRlZC4gVGhlIGZyb250ZW5kIG11c3QgcmVzcG9uZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJj
ZXB0Q29udGludWU8L2NvZGU+LCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9j
b2RlPmAgb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byBy
ZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAi
ZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBD
b3JyZXNwb25kcyB3aXRoIGFuIGVhcmxpZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2Vu
dDwvY29kZT4uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVm
IjogIlJlcXVlc3QiLCAiZGVzY3JpcHRpb24iOiAiT3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRo
YXQgd291bGQgcHJvY2VlZCBpZiB0aGlzIGlzIGNvbnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRl
cmNlcHRlZCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJl
c3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3
aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdv
cmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNl
LiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNl
IGhhcyBiZWVuIGludGVyY2VwdGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxj
b2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50
ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2RlPmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAog
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxp
ZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVzcG9uc2UiLCAiJHJlZiI6ICJSZXNwb25zZSIsICJkZXNjcmlw
dGlvbiI6ICJPcmlnaW5hbCByZXNwb25zZSBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0
aGlzIGlzIGNvbnRpbnVlZC4iIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMGM0NDJlZTkwODg3N2QyMDY3ZDY1
ZTg3NDQxNjUyYThjZjAwYzg4ZS4uZDEwYjMyNTUxM2UyYWNhMDZiN2EzN2E4NTcwODZhYTEyYmFk
YzY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTgxMCwxMCArODEwLDE3IEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJj
ZSYgY2FjCiAgICAgfQogfQogCi1ib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
dGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29y
a0FnZW50KCkpCi0gICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHRSZXF1
ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm4gbmV0d29ya0FnZW50LT53aWxsSW50ZXJjZXB0
KHJlcXVlc3QpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sK
KyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50
ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNCw2
ICs4MzEsMTIgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBs
b2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYg
aGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgbmV0d29ya0FnZW50LT5pbnRl
cmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yTmV0d29ya0FnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMDNiZGQ1NWNjOTMwZGUwY2ZjNjFmOGQ5ZTQy
MTBmNDk1MmFhNDYzMy4uY2M3MGU2OTNiYmFlN2QxY2E3Y2QzNmVkZTEyNGQwYzljNjE2OWQzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWMuaCIKICNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5o
IgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvclBy
b3h5LmgiCkBAIC0yMzIsOCArMjMzLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZWZh
dWx0QXBwZWFyYW5jZURpZENoYW5nZShQYWdlJiwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAg
ICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYp
OwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0KGNv
bnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgc2hv
dWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVl
c3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xl
KFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAt
NDM3LDggKzQ0MCwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRBcHBlYXJh
bmNlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2Fj
aGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3Rh
dGljIGJvb2wgd2lsbEludGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsK
QEAgLTEyNDksMTEgKzEyNTQsMTkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJgogICAgIHdpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJv
b2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdp
bGxJbnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7Cisg
ICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVx
dWVzdCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCByZXF1ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyNjUsNiArMTI3OCwx
MyBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGxvYWRlci5mcmFtZSgpLCByZXF1ZXN0KSk7Cisg
ICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
RnJhbWUobG9hZGVyLmZyYW1lKCkpKQorICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCBy
ZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA5NTRhYWYxMjFhOWZhNTA3ZDgz
YmMxMGFlMzdkZTFmMTI4ZjdkY2ZjLi40MDY2OGExY2I2OWZiNzc0MTZmODI3NmQ5ZGRkMDE5ODhl
NWQwYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtMzAsMTEgKzMwLDIxIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0KTsKK30KKwog
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3Bv
bnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJ
bnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpOwogfQogCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Kik+JiYgaGFuZGxlcikKK3sKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2Vw
dFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSwgaWRlbnRp
ZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKaW5kZXggYjY3ZTg5Yjgw
YjRlN2E4NTg2Y2FjODFhZGU1ZDU4YTFiY2IwZDQzMS4uNTQzZjViMDMzNWMxZWQ2ZGQzYzc2NWJi
MzFmODExM2MzNDcwNjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaApAQCAtMzYsMTQgKzM2LDI3IEBA
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNv
dXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Kik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4pPiYmKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1l
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogfTsKIAoraW5saW5lIGJvb2wg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNv
bnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAg
IEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CisgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJ
bnRlcm5hbCgqZnJhbWUsIHJlcXVlc3QpOworfQorCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKQEAgLTUzLDYgKzY2LDEyIEBAIGlubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUqCiAgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwo
KmZyYW1lLCByZXNwb25zZSk7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmIGhhbmRsZXIpCit7
CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJj
ZXB0UmVxdWVzdChsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOworICAgIGludGVy
Y2VwdFJlcXVlc3RJbnRlcm5hbChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggYWZjZGQyYTdm
YWZmZTBiZWM5ODIwNzJkODk0YmM4NWM2ZTMwYzQ0Yy4uZGE2YTJjZjk4YWY1YWRjMGNkNjUyODcy
ZDYxZWY5Nzg0NmM0YWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNDMsNiArNDMsNyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJGb3JtRGF0YS5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJI
VFRQSGVhZGVyTWFwLmgiCkBAIC04NDEsMTIgKzg0MiwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5jbGVh
cigpOwogICAgIG1fZXh0cmFSZXF1ZXN0SGVhZGVycy5jbGVhcigpOwogCisgICAgY29udGludWVQ
ZW5kaW5nUmVxdWVzdHMoKTsKICAgICBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsKIAogICAg
IHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGZhbHNlKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQorYm9vbCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsLCBOZXR3b3JrU3RhZ2UgbmV0d29ya1N0
YWdlKQogewogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAtODU1LDYg
Kzg1NywxMCBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVS
TCB1cmwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgaW50ZXJjZXB0
IDogbV9pbnRlcmNlcHRzKSB7CisgICAgICAgIGlmIChpbnRlcmNlcHQubmV0d29ya1N0YWdlICE9
IG5ldHdvcmtTdGFnZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoaW50ZXJj
ZXB0LnVybC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYXV0
byBzZWFyY2hTdHJpbmdUeXBlID0gaW50ZXJjZXB0LmlzUmVnZXggPyBDb250ZW50U2VhcmNoVXRp
bGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpSZWdleCA6IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6
OlNlYXJjaFN0cmluZ1R5cGU6OkV4YWN0U3RyaW5nOwogICAgICAgICBhdXRvIHJlZ2V4ID0gQ29u
dGVudFNlYXJjaFV0aWxpdGllczo6Y3JlYXRlUmVndWxhckV4cHJlc3Npb25Gb3JTZWFyY2hTdHJp
bmcoaW50ZXJjZXB0LnVybCwgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUsIHNlYXJjaFN0cmluZ1R5
cGUpOwogICAgICAgICBpZiAocmVnZXgubWF0Y2godXJsU3RyaW5nKSAhPSAtMSkKQEAgLTg2NCw2
ICs4NzAsMTYgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChV
UkwgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHBlbmRpbmdS
ZXF1ZXN0IDogbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudmFsdWVzKCkpIHsKKyAgICAgICAg
UmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsK
KyAgICAgICAgaWYgKGxvYWRlci0+aWRlbnRpZmllcigpKQorICAgICAgICAgICAgcGVuZGluZ1Jl
cXVlc3QtPm1fY29tcGxldGlvbkhhbmRsZXIoJmxvYWRlci0+cmVxdWVzdCgpKTsKKyAgICB9Cisg
ICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwogdm9pZCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7CiAgICAgZm9yIChh
dXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZXMudmFsdWVzKCkpCkBAIC0xMDI5LDYyICsxMDQ1LDY0IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Ym9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCi0gICAgaWYgKCFt
X2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpIHsK
KyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAgY29udGludWVQZW5k
aW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9u
YWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNv
bnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1Jl
Z2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3
b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0
YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsK
LSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3Rh
Z2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci0KICAgICBJbnRlcmNlcHQgaW50ZXJjZXB0OwogICAgIGludGVyY2VwdC51
cmwgPSB1cmw7CiAgICAgaWYgKG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSkKICAgICAgICAgaW50ZXJj
ZXB0LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRp
b25hbElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdl
eDsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBh
dXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6
OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpO
ZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2Up
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFn
ZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGludGVyY2VwdC5uZXR3b3JrU3RhZ2UgPSBuZXR3b3JrU3RhZ2UudmFsdWUoKTsKIAogICAgIGlm
ICghbV9pbnRlcmNlcHRzLmFwcGVuZElmTm90Q29udGFpbnMoaW50ZXJjZXB0KSkKICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiSW50ZXJjZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlzUmVnZXgg
YWxyZWFkeSBleGlzdHMiX3M7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1v
dmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25h
bElzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKQordm9pZCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZywg
Y29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElz
UmVnZXgpCiB7Ci0gICAgaWYgKG5ldHdvcmtTdGFnZVN0cmluZykgewotICAgICAgICBhdXRvIG5l
dHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3Jr
U3RhZ2U+KCpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICBpZiAoIW5ldHdvcmtTdGFnZSkg
ewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtT
dGFnZTogIl9zLCAqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgIH0KLQogICAgIEludGVyY2VwdCBpbnRlcmNlcHQ7CiAgICAgaW50ZXJjZXB0
LnVybCA9IHVybDsKICAgICBpZiAob3B0aW9uYWxDYXNlU2Vuc2l0aXZlKQogICAgICAgICBpbnRl
cmNlcHQuY2FzZVNlbnNpdGl2ZSA9ICpvcHRpb25hbENhc2VTZW5zaXRpdmU7CiAgICAgaWYgKG9w
dGlvbmFsSXNSZWdleCkKICAgICAgICAgaW50ZXJjZXB0LmlzUmVnZXggPSAqb3B0aW9uYWxJc1Jl
Z2V4OwotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgaW50ZXJjZXB0aW5nIHJlcXVlc3RzLgorICAg
IGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVy
czo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtTdGFn
ZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0
YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9IG5ldHdvcmtTdGFnZS52YWx1ZSgpOwogCiAgICAg
aWYgKCFtX2ludGVyY2VwdHMucmVtb3ZlQWxsKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3Ry
aW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlzUmVnZXgi
X3M7CiB9CiAKLWJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0UmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6d2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAg
ICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSk7CisgICAgcmV0dXJuIHNo
b3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpIHx8IHNo
b3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlKTsKK30K
KworYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghbV9pbnRlcmNlcHRpb25F
bmFibGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJj
ZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCk7CiB9CiAKIGJvb2wgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwOTIsNyArMTExMCwyMSBAQCBib29sIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcAogICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpKTsK
KyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpLCBOZXR3b3JrU3RhZ2U6
OlJlc3BvbnNlKTsKK30KKwordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVyKQoreworICAgIEFTU0VSVChtX2VuYWJsZWQp
OworICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOworCisgICAgU3RyaW5nIHJlcXVl
c3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGxvYWRlci5pZGVudGlmaWVyKCkp
OworICAgIGlmIChtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5jb250YWlucyhyZXF1ZXN0SWQp
KSB7CisgICAgICAgIGhhbmRsZXIoJmxvYWRlci5yZXF1ZXN0KCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNldChyZXF1ZXN0SWQsIG1h
a2VVbmlxdWU8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+KCZsb2FkZXIsIFdURk1vdmUoaGFuZGxl
cikpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVkKHJlcXVl
c3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3QoKSkpOwog
fQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCkBAIC0xMTEyLDE5ICsxMTQ0LDE1MyBAQCB2b2lkIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlSW50ZXJjZXB0
ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIG51
bGxwdHIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRp
bnVlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBuZXR3
b3JrU3RhZ2VTdHJpbmcpCiB7CisgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3b3JrU3RhZ2VTdHJpbmcp
OworICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0
cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0YWdlU3RyaW5nKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuZXR3b3JrU3RhZ2UudmFsdWUoKSA9PSBO
ZXR3b3JrU3RhZ2U6OlJlcXVlc3QpIHsKKyAgICAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVx
dWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAgICAg
ICAgaWYgKHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KSB7CisgICAgICAgICAgICBwZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxlcigmcGVuZGluZ0ludGVyY2VwdFJlcXVl
c3QtPm1fbG9hZGVyLT5yZXF1ZXN0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVz
dCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
YXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZXMudGFrZShyZXF1ZXN0SWQpOwotICAgIGlmICghcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7
Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9u
c2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICBpZiAocGVuZGluZ0ludGVyY2VwdFJlc3Bv
bnNlKSB7CisgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZFdpdGhPcmln
aW5hbFJlc3BvbnNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXJyb3JTdHJpbmcg
PSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlcXVl
c3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nKiBtZXRob2QsIGNvbnN0IFN0cmluZyogdXJsLCBjb25zdCBKU09OOjpPYmplY3Qq
IGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBwZW5kaW5nUmVx
dWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAgICBp
ZiAocGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9IHBl
bmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICAgICAgaWYgKCFsb2FkZXItPmlkZW50
aWZpZXIoKSkgeworICAgICAgICAgICAgLy8gRG8gbm90IHRocm93IHVwb24gY29udGludWUgb2Yg
Y2FuY2VsZWQgcmVxdWVzdHMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgLy8gU2FmZSB0byBjb25zdCBjYXN0IGF0IHRoaXMgcG9pbnQsIHdlIGFyZSBvbmx5IGFkanVz
dGluZyB0aGUgbWV0aG9kIC8gaGVhZGVycyAvIHBvc3QuCisgICAgICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0ID0gbG9hZGVyLT5yZXF1ZXN0KCk7CisgICAgICAgIGlmICh1cmwpCisgICAgICAg
ICAgICByZXF1ZXN0LnNldFVSTChVUkwoeyB9LCAqdXJsKSk7CisgICAgICAgIGlmIChtZXRob2Qp
CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoKm1ldGhvZCk7CisgICAgICAgIGlm
IChoZWFkZXJzKSB7CisgICAgICAgICAgICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0SGVhZGVyczsK
KyAgICAgICAgICAgIGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDogKmhlYWRlcnMpIHsKKyAgICAg
ICAgICAgICAgICBTdHJpbmcgaGVhZGVyVmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVl
LT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0SGVh
ZGVycy5hZGQoa2V5LCBoZWFkZXJWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAocG9zdERhdGEpIHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBidWZmZXI7CisgICAgICAgICAgICBpZiAoIWJhc2U2NERlY29kZSgqcG9zdERhdGEsIGJ1
ZmZlcikpIHsKKyAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZGVjb2Rl
IGdpdmVuIHBvc3REYXRhIl9zOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0ZShidWZm
ZXIpKTsKKyAgICAgICAgfQorICAgICAgICBwZW5kaW5nUmVxdWVzdC0+bV9jb21wbGV0aW9uSGFu
ZGxlcigmcmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVx
dWVzdElkIl9zOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0
aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJp
bmcqIG1pbWVUeXBlLCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0
LCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogY29udGVudCwgY29uc3QgYm9vbCogYmFz
ZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNv
bnN0IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcqIGVycm9yVHlwZVN0cmluZykKIHsKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0g
bV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlmIChwZW5k
aW5nUmVxdWVzdCAmJiBlcnJvclR5cGVTdHJpbmcpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXIq
IGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICAgICAgaWYgKCFs
b2FkZXItPmlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxl
IHRvIGFib3J0IHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGF1dG8gZXJyb3JUeXBlID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlPigqZXJy
b3JUeXBlU3RyaW5nKTsKKyAgICAgICAgaWYgKCFlcnJvclR5cGUpIHsKKyAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIlVua25vd24gZXJyb3IgdHlwZSJfczsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOworICAgICAgICBzd2l0Y2gg
KGVycm9yVHlwZS52YWx1ZSgpKSB7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkdlbmVyYWw6CisgICAgICAgICAgICBlcnJvciA9
IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwo
KSwgIlJlcXVlc3QgaW50ZXJjZXB0ZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkFjY2Vzc0NvbnRyb2w6CisgICAgICAgICAgICBl
cnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVy
LT51cmwoKSwgIkFjY2VzcyBkZW5pZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0Nv
bnRyb2wpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkNhbmNlbGxhdGlvbjoKKyAgICAgICAg
ICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBs
b2FkZXItPnVybCgpLCAiUmVxdWVzdCBjYW5jZWxlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
Q2FuY2VsbGF0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0OgorICAgICAg
ICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IHRpbWVkIG91dCJfcywgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6VGltZW91dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGxvYWRlci0+ZGlkRmFpbChlcnJvcik7CisgICAgICAgIHBlbmRpbmdSZXF1
ZXN0LT5tX2NvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGlmIChwZW5kaW5nUmVxdWVzdCAmJiAoIXN0YXR1cyB8fCAhc3RhdHVzVGV4dCB8fCAh
bWltZVR5cGUgfHwgIWhlYWRlcnMpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gInN0YXR1cywg
c3RhdHVzVGV4dCwgbWltZVR5cGUgYW5kIGhlYWRlcnMgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBm
dWxmaWxsaW5nIGludGVyY2VwdGVkIHJlcXVlc3QiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKHBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRl
cj4gbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAgICBpZiAo
IWxvYWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFi
bGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhOworICAgICAgICBpZiAoY29udGVudCkgeworICAgICAgICAgICAgaWYgKGJhc2U2
NEVuY29kZWQgJiYgKmJhc2U2NEVuY29kZWQpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOworICAgICAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKCpjb250ZW50
LCBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0
byBkZWNvZGUgZ2l2ZW4gY29udGVudCJfczsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LT51dGY4KCkuZGF0YSgpLCBj
b250ZW50LT51dGY4KCkubGVuZ3RoKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgICAgIC8vIE1pbWljIGRhdGEgVVJM
IGxvYWQgYmVoYXZpb3IgLSByZXBvcnQgZGlkUmVjZWl2ZVJlc3BvbnNlICYgZGlkRmluaXNoTG9h
ZGluZy4KKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwZW5kaW5nUmVxdWVzdC0+
bV9sb2FkZXItPnVybCgpLCAqbWltZVR5cGUsIGRhdGEtPnNpemUoKSwgU3RyaW5nKCkpOworICAg
ICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpJbnNwZWN0
b3JPdmVycmlkZSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKCpzdGF0dXMp
OworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgqc3RhdHVzVGV4dCk7CisgICAg
ICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOworICAgICAgICBmb3IgKGF1dG8mIGhl
YWRlciA6ICpoZWFkZXJzKSB7CisgICAgICAgICAgICBTdHJpbmcgaGVhZGVyVmFsdWU7CisgICAg
ICAgICAgICBpZiAoaGVhZGVyLnZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAg
ICAgICAgICAgZXhwbGljaXRIZWFkZXJzLmFkZChoZWFkZXIua2V5LCBoZWFkZXJWYWx1ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4
cGxpY2l0SGVhZGVycykpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCByZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICAgICAg
bG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRh
dGEucmVsZWFzZU5vbk51bGwoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChidWZmZXIt
PnNpemUoKSkKKyAgICAgICAgICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92
ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAg
ICAgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7
CisgICAgICAgIH0pOworICAgICAgICBwZW5kaW5nUmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1dG8gcGVuZGluZ0lu
dGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRha2UocmVxdWVz
dElkKTsKICAgICBpZiAoIXBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSkgewogICAgICAgICBlcnJv
clN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZvciBnaXZlbiBy
ZXF1ZXN0SWQiX3M7CkBAIC0xMTUyLDE2ICsxMzE4LDE2IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zCiAgICAgfQogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOwotICAg
IGlmIChiYXNlNjRFbmNvZGVkKSB7CisgICAgaWYgKGJhc2U2NEVuY29kZWQgJiYgKmJhc2U2NEVu
Y29kZWQgJiYgY29udGVudCkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwotICAg
ICAgICBpZiAoIWJhc2U2NERlY29kZShjb250ZW50LCBidWZmZXIpKSB7CisgICAgICAgIGlmICgh
YmFzZTY0RGVjb2RlKCpjb250ZW50LCBidWZmZXIpKSB7CiAgICAgICAgICAgICBlcnJvclN0cmlu
ZyA9ICJVbmFibGUgdG8gZGVjb2RlIGdpdmVuIGNvbnRlbnQiX3M7CiAgICAgICAgICAgICBwZW5k
aW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG92
ZXJyaWRlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQudXRmOCgpLmRhdGEoKSwg
Y29udGVudC51dGY4KCkubGVuZ3RoKCkpOworICAgIH0gZWxzZSBpZiAoY29udGVudCkKKyAgICAg
ICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC0+dXRmOCgpLmRh
dGEoKSwgY29udGVudC0+dXRmOCgpLmxlbmd0aCgpKTsKIAogICAgIHBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZS0+cmVzcG9uZChvdmVycmlkZVJlc3BvbnNlLCBvdmVycmlkZURhdGEpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgKaW5kZXggYmZkMTMxZTliNTg1NmM4NGRhNzcyNDgwNWU3MTM5N2I3Yzc0ODZhOS4u
Njk2ZGQxMTI1NWM4OTRmM2Y2NmY0YTI5MWM3MmM1Y2ViNGEzNDY3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
CkBAIC04OCwxMCArODgsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VyaWFsaXplZENlcnRp
ZmljYXRlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogc2Vy
aWFsaXplZENlcnRpZmljYXRlKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmVXZWJTb2NrZXQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RH
cm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
KSBmaW5hbDsKICAgICB2b2lkIHNldEludGVyY2VwdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcmLCBi
b29sIGVuYWJsZWQpIGZpbmFsOwotICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsKLSAg
ICB2b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBT
dHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7Ci0gICAgdm9pZCBpbnRlcmNlcHRDb250
aW51ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKSBmaW5hbDsKLSAgICB2
b2lkIGludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3Qg
U3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVz
VGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lkIGFkZElu
dGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogaXNSZWdleCkgZmluYWw7CisgICAgdm9pZCByZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcs
IGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgpIGZpbmFsOwor
ICAgIHZvaWQgaW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOworICAgIHZv
aWQgaW50ZXJjZXB0V2l0aFJlcXVlc3QoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nKiBtZXRob2QsIGNvbnN0IFN0cmluZyogdXJsLCBjb25zdCBKU09O
OjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpIGZpbmFsOworICAgIHZv
aWQgaW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIGNvbnN0IFN0cmluZyogY29udGVudCwgY29uc3QgYm9vbCogYmFzZTY0RW5jb2RlZCwg
Y29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyog
c3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcqIGVy
cm9yVHlwZSkgZmluYWw7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAgICB2
b2lkIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKCk7CkBAIC0xMTgsOSArMTE5LDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciYpOwogICAgIHZvaWQg
c2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVN0cmluZyk7CiAgICAgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxh
dGlvbihEb2N1bWVudCYpOwotICAgIGJvb2wgd2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CisgICAgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOworICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAg
dm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJik7CiAKICAgICB2b2lkIHNlYXJjaE90aGVy
UmVxdWVzdHMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZlB0cjxKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CiAg
ICAgdm9pZCBzZWFyY2hJblJlcXVlc3QoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGlzUmVn
ZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBl
czo6U2VhcmNoTWF0Y2g+PiYpOwpAQCAtMTQwLDcgKzE0Myw5IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUpOwogCi0gICAgYm9vbCBz
aG91bGRJbnRlcmNlcHQoVVJMKTsKKyAgICB1c2luZyBOZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U7CisgICAgYm9vbCBzaG91bGRJbnRlcmNl
cHQoVVJMLCBOZXR3b3JrU3RhZ2UpOworICAgIHZvaWQgY29udGludWVQZW5kaW5nUmVxdWVzdHMo
KTsKICAgICB2b2lkIGNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpOwogCiAgICAgV2ViU29ja2V0
KiB3ZWJTb2NrZXRGb3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwpAQCAtMTUz
LDYgKzE1OCwyMCBAQCBwcml2YXRlOgogCiAgICAgZG91YmxlIHRpbWVzdGFtcCgpOwogCisgICAg
Y2xhc3MgUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCk7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXIqIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIDogbV9sb2FkZXIo
bG9hZGVyKQorICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQorICAgICAgICB7IH0KKworICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVx
dWVzdCgpID0gZGVmYXVsdDsKKyAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBtX2xvYWRl
cjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qq
KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICB9OworCiAgICAgY2xhc3MgUGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlKTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yMDQs
MTUgKzIyMywxOCBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBib29s
IGNhc2VTZW5zaXRpdmUgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgaXNSZWdleCB7IGZhbHNlIH07
CisgICAgICAgIE5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UgeyBOZXR3b3JrU3RhZ2U6OlJlc3Bv
bnNlIH07CiAKICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRlcmNlcHQm
IG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdXJsID09IG90aGVy
LnVybAogICAgICAgICAgICAgICAgICYmIGNhc2VTZW5zaXRpdmUgPT0gb3RoZXIuY2FzZVNlbnNp
dGl2ZQotICAgICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdleDsKKyAgICAg
ICAgICAgICAgICAmJiBpc1JlZ2V4ID09IG90aGVyLmlzUmVnZXgKKyAgICAgICAgICAgICAgICAm
JiBuZXR3b3JrU3RhZ2UgPT0gb3RoZXIubmV0d29ya1N0YWdlOwogICAgICAgICB9CiAgICAgfTsK
ICAgICBWZWN0b3I8SW50ZXJjZXB0PiBtX2ludGVyY2VwdHM7CisgICAgSGFzaE1hcDxTdHJpbmcs
IHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdD4+IG1fcGVuZGluZ0ludGVy
Y2VwdFJlcXVlc3RzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGlu
Z0ludGVyY2VwdFJlc3BvbnNlPj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzOwogCiAgICAg
Ly8gRklYTUU6IEluc3BlY3Rvck5ldHdvcmtBZ2VudCBzaG91bGQgbm90IGJlIGF3YXJlIG9mIHN0
eWxlIHJlY2FsY3VsYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyMzFlZGVjOGNjYzcxZDY1MjE3MTA2MzYz
ZjVjYzM0OTkwYTE2NDdlLi42NTllMmZlODkwN2IzMTU5NzY2MGE3ZGRjNDhiOTQ1ZDMzZjBmNWVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTg0Niw3ICs4NDYsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQog
CiAgICAgcmVxdWVzdC51cGRhdGVSZWZlcnJlclBvbGljeShkb2N1bWVudCgpID8gZG9jdW1lbnQo
KS0+cmVmZXJyZXJQb2xpY3koKSA6IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25n
cmFkZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0
UmVxdWVzdCgmZnJhbWUsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQorICAgIGlmIChJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQoJmZyYW1lLCByZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmVxdWVzdC5zZXRDYWNoaW5nUG9saWN5KENhY2hpbmdQ
b2xpY3k6OkRpc2FsbG93Q2FjaGluZyk7CiAKICAgICBhdXRvJiBwYWdlID0gKmZyYW1lLnBhZ2Uo
KTsKQEAgLTE0MzYsNyArMTQzNiw3IEBAIFZlY3RvcjxSZWY8U1ZHSW1hZ2U+PiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6YWxsQ2FjaGVkU1ZHSW1hZ2VzKCkgY29uc3QKIAogUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
SW50ZXJjZXB0UmVxdWVzdChmcmFtZSgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKKyAg
ICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KGZyYW1lKCksIHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
UmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCksICJJbnNwZWN0b3IgaW50ZXJjZXB0Il9zIH0pOwogCiAgICAg
aWYgKHJlcXVlc3QuY2hhcnNldCgpLmlzRW1wdHkoKSAmJiAodHlwZSA9PSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6U2NyaXB0IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxl
U2hlZXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwppbmRleCAxYzgxMjYwZDhk
YjIzNDhjMDBiZmVkOTViN2JjNzAyMDE1MDBjNWRlLi4wMzI2ODczZjIzOGZmZjdmZWJjMTBhOWNj
ODYxNWE2YjM2YTM5ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwpAQCAt
MTYxLDcgKzE2MSw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxvY2Fs
UmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVNl
bnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJh
Y2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zNjQsNyArMzY0LDcgQEAgV0kuTmV0
d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAg
ICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZl
LAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4
LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5l
dHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNw
ZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAg
ICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5ldHdv
cmsuYWRkSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0zOTcsNyArMzk3LDcgQEAgV0ku
TmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAg
ICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0
aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1Jl
Z2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVt
Lk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAg
ICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5l
dHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC05MTEsNyArOTExLDcg
QEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICBsZXQgdXJsID0gV0kudXJsV2l0aG91dEZyYWdtZW50KHJlc3BvbnNlLnVy
bCk7CiAgICAgICAgIGxldCBsb2NhbFJlc291cmNlT3ZlcnJpZGUgPSB0aGlzLmxvY2FsUmVzb3Vy
Y2VPdmVycmlkZUZvclVSTCh1cmwpOwogICAgICAgICBpZiAoIWxvY2FsUmVzb3VyY2VPdmVycmlk
ZSB8fCBsb2NhbFJlc291cmNlT3ZlcnJpZGUuZGlzYWJsZWQpIHsKLSAgICAgICAgICAgIHRhcmdl
dC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUocmVxdWVzdElkKTsKKyAgICAgICAgICAg
IHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUocmVxdWVzdElkLCBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEzNzcsNyArMTM3Nyw3IEBAIFdJLk5ldHdvcmtN
YW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
ICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAgIGNhc2VTZW5z
aXRpdmU6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAgICAgICAg
ICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAgIG5l
dHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJl
c3BvbnNlLAorICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3Jr
Lk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKICAgICAgICAgfTsKIAogICAgICAgICAvLyBDT01QQVRJ
QklMSVRZIChpT1MgMTMuMCk6IE5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIC8gTmV0d29yay5yZW1v
dmVJbnRlcmNlcHRpb24gZGlkIG5vdCBleGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5q
cwppbmRleCA1OWMyOWM5YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgwMGFhLi5hNmU2ZGVm
YWVlZGYxMjkxNTg4YmViODcxMDBlMDJmNzZjZjMzMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09i
c2VydmVyLmpzCkBAIC0xMDgsOCArMTA4LDggQEAgV0kuTmV0d29ya09ic2VydmVyID0gY2xhc3Mg
TmV0d29ya09ic2VydmVyIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5EaXNwYXRjaGVyCiAgICAg
ICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiAgICAgfQogCi0gICAgcmVzcG9uc2VJbnRl
cmNlcHRlZChyZXF1ZXN0SWQsIHJlc3BvbnNlKQorICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQocmVx
dWVzdElkLCByZXF1ZXN0KQogICAgIHsKLSAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVzcG9u
c2VJbnRlcmNlcHRlZCh0aGlzLl90YXJnZXQsIHJlcXVlc3RJZCwgcmVzcG9uc2UpOworICAgICAg
ICBXSS5uZXR3b3JrTWFuYWdlci5yZXNwb25zZUludGVyY2VwdGVkKHRoaXMuX3RhcmdldCwgcmVx
dWVzdElkLCByZXF1ZXN0KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGI4ZGNjYWQyYzJj
ZjhkMDAwMTQwMDQwN2NhY2E2ZTI3YjFmODgyNDkuLjQyZjNiNDI4OTQyMzQ5ZmJhYmU4MWQzMWE2
NWJiZmY5NzE2YjA4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9h
ZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaD4K
QEAgLTIzMCw4ICsyMzEsMTcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
KFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKIAogICAgIGlmICgh
dHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQ
YXJhbWV0ZXJzKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3
b3JrUHJvY2VzcyIpOwotICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVz
b3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVy
aW5nVGltZShyZXNvdXJjZSkpOwotICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHJlc291
cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciB8
fCAhSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
KHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKKyAg
ICAgICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwg
cmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291
cmNlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QocmVzb3VyY2VMb2FkZXIs
IFt0aGlzLCBwcm90ZWN0ZWRSZXNvdXJjZUxvYWRlciA9IG1ha2VSZWZQdHIoJnJlc291cmNlTG9h
ZGVyKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCByZXNvdXJjZV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNjaGVkdWxl
TG9hZEZyb21OZXR3b3JrUHJvY2VzcygqcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIsICpyZXF1ZXN0
LCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5k
bGVycyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDE3ODhhNDViNzczZDAyNzI2ZTRiYWY0Y2YwZTg0YzdkOTY3YTQwMGIu
LjliZGFhMDVkM2RlYjhlMWJkZDhmZmIwOTZiZDBjNDE5ZjkxMDg5NWIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21haWwu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2Vw
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBO
ZXR3b3JrCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3JrLmludGVyY2Vw
dFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBiZSBjb250aW51ZWQs
IG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2FuIG5vdyBoYXZlCisg
ICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNv
bnRpbnVlLXJlc3BvbnNlLmh0bWw6CisKIDIwMjAtMDUtMTIgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXVtXSzFdIHJlcXVlc3RB
bmltYXRpb25GcmFtZSBkb2Vzbid0IHdvcmsgc2luY2UgcjI0NDE4MiBpbiBBY2NlbGVyYXRlZCBD
b21wb3NpdGluZyBtb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCmluZGV4IGEwMjY0OWQ1NmJkYjNk
Mjg1YzFmMGQ3ZjgwMGNmZTQxMDg5MjI2NDEuLjgzMWE2MWY2Nzg1ZTQ0ODhiMTJkN2RmZGVmMWZl
NjZkMzc1NTEyMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCkBAIC04NywxMiArODcsMTQgQEAg
VGVzdFBhZ2UucnVuVGVzdCA9IHdpbmRvdy5ydW5UZXN0ID0gZnVuY3Rpb24oKQogICAgIGlmICh0
eXBlb2YgdGVzdEZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgIGFsZXJ0KCJGYWls
ZWQgdG8gc2VuZCB0ZXN0KCkgYmVjYXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4iKTsKICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBsZXQgdXJsID0gdGVzdFJ1bm5lci5pbnNwZWN0b3JUZXN0U3R1YlVSTDsKICAgICBpZiAoIXVy
bCkgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIG9idGFpbiBpbnNwZWN0b3IgdGVzdCBzdHVi
IFVSTC4iKTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJbkZyb250
ZW5kKGluaXRpYWxpemVycykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTQ4
ZmQ3Y2NkOTlkMDRmNjI3ZGZhYTAwMzM3ZTlhMDkxNDFlMmUxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24uCisKKworPT0g
UnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogc2V0VXAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrIHJlcXVl
c3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0Q29udGludWUKK1Jl
c3BvbnNlIGRhdGE6ICd7ImFscGhhIjoiYmV0YSIsImdhbW1hIjoxMjM0NX0nCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJj
ZXB0ZWQuaW50ZXJjZXB0V2l0aFJlcXVlc3QKK3RleHQ6IGludGVyY2VwdGVkIHJlcXVlc3QKKwor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVx
dWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXNwb25zZQordGV4dDogaW50ZXJjZXB0ZWQg
ZGF0YQorc3RhdHVzOiAyMDAKK3N0YXR1c1RleHQ6IE9LCittaW1lVHlwZTogYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtCitteS1oZWFkZXI6IG15LXZhbHVlCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJj
ZXB0V2l0aFJlc3BvbnNlV2l0aEVycm9yCitSZXF1ZXN0IGVycm9yOiAnUmVxdWVzdCBjYW5jZWxl
ZCcKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1y
ZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ4Y2Q4ODYxYmVhYzJjZDAxMTNlNDAxN2VkYzQyM2M2
YTExZTU5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKQEAgLTAsMCArMSwxNzcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBmZXRjaERhdGEoKSB7CisgICAgdHJ5
IHsKKyAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJ3Jlc291cmNlcy9kYXRhLmpz
b24nKTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRleHQ6IGF3YWl0IHJlc3BvbnNl
LnRleHQoKSwKKyAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLAorICAgICAgICAg
ICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCwKKyAgICAgICAgICAgIG1pbWVUeXBl
OiByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyksCisgICAgICAgICAgICBoZWFk
ZXI6IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdteS1oZWFkZXInKSwKKyAgICAgICAgfTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiBlLm1lc3NhZ2U7CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5bmNT
dWl0ZSgiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiIpOworCisgICAgZnVuY3Rpb24gcHJp
bnRGZXRjaFJlc3VsdChyZXN1bHQpCisgICAgeworICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJ0
ZXh0OiAiICsgcmVzdWx0LnRleHQpOworICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJzdGF0dXM6
ICIgKyByZXN1bHQuc3RhdHVzKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygic3RhdHVzVGV4
dDogIiArIHJlc3VsdC5zdGF0dXNUZXh0KTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygibWlt
ZVR5cGU6ICIgKyByZXN1bHQubWltZVR5cGUpOworICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJt
eS1oZWFkZXI6ICIgKyByZXN1bHQuaGVhZGVyKTsKKyAgICB9CisKKyAgICBsZXQgdXJsOworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInNldFVwIiwKKyAgICAgICAgYXN5
bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBbcmVzdWx0MSwgcmVzdWx0Miwge3Jlc3VsdH1d
ID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29s
LmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5lbmFibGUiLCBwYXJhbXM6IHt9fSksCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJO
ZXR3b3JrLmVuYWJsZSIsIHBhcmFtczoge319KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQ
cm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6
IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImRvY3VtZW50LlVSTCIsCisgICAg
ICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0
Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5zZXRJbnRlcmNlcHRpb25FbmFibGVkIiwgcGFyYW1z
OiB7CisgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsCisgICAgICAgICAgICAgICAg
fX0pLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGxldCBiYXNlVVJMID0gcmVzdWx0
LnZhbHVlLnN1YnN0cmluZygwLCByZXN1bHQudmFsdWUubGFzdEluZGV4T2YoIi8iKSk7CisgICAg
ICAgICAgICB1cmwgPSBiYXNlVVJMICsgIi9yZXNvdXJjZXMvZGF0YS5qc29uIjsKKyAgICAgICAg
ICAgIGF3YWl0IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29y
ay5hZGRJbnRlcmNlcHRpb24iLCBwYXJhbXM6IHsgdXJsLCBzdGFnZTogInJlcXVlc3QiIH19KTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmlu
dGVyY2VwdENvbnRpbnVlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGNvbnRpbnVlIGlu
dGVyY2VwdGVkIHJlcXVlc3QuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAg
IC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAgICAgICAgbGV0IFtmZXRjaFJl
c3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVu
dGltZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9u
OiAiZmV0Y2hEYXRhKCkiLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVxdWVzdEludGVy
Y2VwdGVkIn0pLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIC8vIExldCB0aGUgbG9h
ZCBjb250aW51ZS4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlz
ZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7
bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9iamVjdElk
LAorICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLAorICAgICAgICAgICAg
ICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQo
e21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQs
CisgICAgICAgICAgICAgICAgICAgIHN0YWdlOiAicmVxdWVzdCIsCisgICAgICAgICAgICAgICAg
fX0pLAorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJSZXNw
b25zZSBkYXRhOiAnIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZS50ZXh0LnRyaW0oKSArICIn
Iik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogIk5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJbnRlcmNlcHRl
ZC5pbnRlcmNlcHRXaXRoUmVxdWVzdCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBmdWxm
aWxsIGludGVyY2VwdGVkIHJlcXVlc3Qgd2l0aCByZXNwb25zZS4iLAorICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAg
ICAgICAgICBsZXQgW2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0gPSBhd2Fp
dCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRD
b21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAg
ICAgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoKSIsCisgICAgICAgICAgICAgICAgfX0p
LAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQoe2V2ZW50OiAi
TmV0d29yay5yZXF1ZXN0SW50ZXJjZXB0ZWQifSksCisgICAgICAgICAgICBdKTsKKworICAgICAg
ICAgICAgLy8gRnVsZmlsbCB0aGUgcmVxdWVzdCB3aXRoIGRhdGEuCisgICAgICAgICAgICBsZXQg
W2ZldGNoUmVzdWx0XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdhaXRQcm9taXNl
IiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VPYmplY3RJZDogZmV0Y2hS
ZXN1bHRQcm9taXNlLnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
QnlWYWx1ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdFdp
dGhSZXF1ZXN0IiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogaW50
ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICB1cmw6
IHVybC5yZXBsYWNlKCdkYXRhLmpzb24nLCAnZGF0YTIuanNvbicpLAorICAgICAgICAgICAgICAg
IH19KSwKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygidGV4
dDogIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZS50ZXh0KTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yayByZXF1
ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXNwb25z
ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBmdWxmaWxsIGludGVyY2VwdGVkIHJlcXVl
c3Qgd2l0aCByZXNwb25zZS4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAg
Ly8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAgICBsZXQgW2ZldGNoUmVz
dWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50
aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246
ICJmZXRjaERhdGEoKSIsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIElu
c3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQoe2V2ZW50OiAiTmV0d29yay5yZXF1ZXN0SW50ZXJj
ZXB0ZWQifSksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgLy8gRnVsZmlsbCB0aGUg
cmVxdWVzdCB3aXRoIGRhdGEuCisgICAgICAgICAgICBsZXQgW2ZldGNoUmVzdWx0XSA9IGF3YWl0
IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENv
bW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdhaXRQcm9taXNlIiwgcGFyYW1zOiB7CisgICAgICAg
ICAgICAgICAgICAgIHByb21pc2VPYmplY3RJZDogZmV0Y2hSZXN1bHRQcm9taXNlLnJlc3VsdC5v
YmplY3RJZCwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZQorICAgICAg
ICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENv
bW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlIiwgcGFyYW1zOiB7
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMu
cmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAg
ICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczog
eyAibXktaGVhZGVyIjogIm15LXZhbHVlIiB9LAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlw
ZTogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRl
bnQ6IGJ0b2EoImludGVyY2VwdGVkIGRhdGEiKSwKKyAgICAgICAgICAgICAgICAgICAgYmFzZTY0
RW5jb2RlZDogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAg
ICAgICAgICAgIHByaW50RmV0Y2hSZXN1bHQoZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmludGVy
Y2VwdFdpdGhSZXNwb25zZVdpdGhFcnJvciIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBh
Ym9ydCBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggZXJyb3IuIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAg
ICAgICAgbGV0IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQg
UHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29t
bWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAg
ICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiLAorICAgICAgICAgICAgICAgIH19KSwK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5l
dHdvcmsucmVxdWVzdEludGVyY2VwdGVkIn0pLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAg
ICAgIC8vIEFib3J0IHRoZSByZXF1ZXN0IGFzIGNhbmNlbGVkLgorICAgICAgICAgICAgbGV0IFtm
ZXRjaFJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmF3YWl0UHJvbWlzZSIs
IHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVz
dWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAgICAgICAgICAgIHJldHVybkJ5
VmFsdWU6IHRydWUsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRXaXRo
UmVzcG9uc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRl
cmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIGVycm9y
VHlwZTogIkNhbmNlbGxhdGlvbiIsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAg
XSk7CisgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJSZXF1ZXN0IGVycm9yOiAnIiArIGZl
dGNoUmVzdWx0LnJlc3VsdC52YWx1ZSArICInIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uLjwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250
aW51ZS1yZXNwb25zZS5odG1sCmluZGV4IDQ0ODA2NDIwMDQ0NzY5N2ZiMDdmNDE2ZTk3ODYzOThl
MDAzZDI0NjAuLmQ2NmUxNDBlYjcxNzg2NDdjMzg4NjI5YjBkMTNlMWFhMDFhMDMwYzkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJy
aWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbApAQCAt
NDYsNyArNDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIC8vIExldCB0aGUgbG9h
ZCBjb250aW51ZS4KICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVzcG9u
c2VSZWNlaXZlZCJ9KSwKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENv
bW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHtyZXF1
ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJlcXVlc3RJZH19KSwKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJj
ZXB0Q29udGludWUiLCBwYXJhbXM6IHtyZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJl
cXVlc3RJZCwgc3RhZ2U6ICJyZXNwb25zZSJ9fSksCiAgICAgICAgICAgICBdKTsKICAgICAgICAg
ICAgIFByb3RvY29sVGVzdC5wYXNzKCJSZXNwb25zZSByZWNlaXZlZC4iKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEyLmpzb24gYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YTIuanNvbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ODZjYTQ5NGMxZGYzOTZiM2Q5ODIxN2MxMzhmYjcxNTg4MWYzMmE1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEyLmpz
b24KQEAgLTAsMCArMSBAQAoraW50ZXJjZXB0ZWQgcmVxdWVzdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399499</attachid>
            <date>2020-05-15 11:18:27 -0700</date>
            <delta_ts>2020-05-27 23:36:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200515111826.patch</filename>
            <type>text/plain</type>
            <size>65369</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTk5NDI3ZDM3MjJjZWNkZDk3YTYxMDkzNGJjODUzZGQ2MGNlNGM2Li41NWIxOTQwN2Y1YjI5MGY0
ZmM5Njc3N2Q0NmQzMzNiMGJhYzY3OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNS0xMiAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRml4IGV4aXN0aW5nIHVz
YWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlNDIGFuZCBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2YTNmNDc4MWFmNjI1ZGY1YTg4OWJiOWJhODkxYmIwZmMxN2E4NjFhLi5jNjVjNmY4M2Y0OTcw
MTViNzk3NTFhMzg1OGU1MzA2NTNiMzliMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAK
KzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAK
KyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJl
cXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZp
ZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAg
J3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVl
c3RJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3Zl
SW50ZXJjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3Bv
bnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0wNS0xMiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3N0ZXIg
c2V0IGFmdGVyIHBsYXliYWNrIGJlZ2lucyBzaG91bGQgYmUgaWdub3JlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggMzhjN2MzMDY0YmVlNzRjOGQyOTExMGRjYzA3NDA3Zjg2Yzk0YjljOS4u
MjA3M2Y3YTc4OWM4MjBlYzI2MDExNGI2ZGI3ZDA2MGU2ODk4YzAzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDUtMTMgIFBhdmVsICA8cGF2ZWwuZmVs
ZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVl
c3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRp
b24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBi
ZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2Fu
IG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVycmlk
ZSk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxSZXNv
dXJjZU92ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXF1
ZXN0SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLl9o
YW5kbGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtP
YnNlcnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKyAgICAgICAgKFdJLk5ldHdv
cmtPYnNlcnZlcik6CisKIDIwMjAtMDUtMTEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5ldHdvcms6IFRpbWluZzogZ2FwcyBhcm91
bmQgdGhlICJSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHRpbWluZyBkYXRhIiBtZXNzYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDE1YTFmYTlhYjRiNTg5OGY0MWM3OTY5NmY3N2IxNGY2MDMwODU5YmIuLjBjZGIxYjIx
MzUyMTg5NmU3N2Q1NDM3ZDNhZDkxYTQwNzk4N2QxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29y
ayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9k
aWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAg
ICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIwLTA1LTEyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsgZHJh
ZyBhbmQgZHJvcCBoYW5kbGluZyBpbiBwcmVwYXJhdGlvbiBmb3IgR1RLNApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgppbmRl
eCA3NzdhNTQxNjZlZDY2NjQ1NjFiM2Y4MjQ5YTZhYmI0YWM1OWQwNDgwLi44YmNjMmQxYmUxNWYz
NWZiNDY5ZTExYmY3OTM3YmUwODFhMjliNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgpAQCAtMTU1LDcgKzE1NSwx
MyBAQAogICAgICAgICAgICAgImlkIjogIk5ldHdvcmtTdGFnZSIsCiAgICAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVudCBzdGFn
ZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKLSAgICAgICAgICAgICJlbnVtIjogWyJyZXNwb25z
ZSJdCisgICAgICAgICAgICAiZW51bSI6IFsicmVxdWVzdCIsICJyZXNwb25zZSJdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJSZXNvdXJjZUVycm9yVHlwZSIsCisg
ICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKKyAgICAgICAgICAgICJl
bnVtIjogWyJHZW5lcmFsIiwgIkFjY2Vzc0NvbnRyb2wiLCAiQ2FuY2VsbGF0aW9uIiwgIlRpbWVv
dXQiXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC0yMzgsMTAgKzI0
NCwxMCBAQAogICAgICAgICAgICAgIm5hbWUiOiAiYWRkSW50ZXJjZXB0aW9uIiwKICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJBZGQgYW4gaW50ZXJjZXB0aW9uLiIsCiAgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjog
InN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0
cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgcGF0dGVybiB0byBpbnRlcmNlcHQsIGludGVyY2Vw
dCBldmVyeXRoaW5nIGlmIG5vdCBzcGVjaWZpZWQgb3IgZW1wdHkiIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJkZXNjcmlwdGlv
biI6ICJTdGFnZSB0byBpbnRlcmNlcHQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Y2FzZVNlbnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJh
bWV0ZXIuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjog
ImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJl
YXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0sCi0gICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0aGlzIGFwcGxpZXMg
dG8gYWxsIG5ldHdvcmsgc3RhZ2VzLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNS
ZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lv
bi4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMjQ5LDE2ICsy
NTUsMjggQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZW1vdmUgYW4gaW50ZXJjZXB0
aW9uLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdl
IHRvIGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0
aXZlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJJZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0s
Ci0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAg
cGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0
d29yayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5
cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVl
LCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAg
ICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJp
bnRlcmNlcHRDb250aW51ZSIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udGludWUg
YW4gaW50ZXJjZXB0aW9uIHdpdGggbm8gbW9kaWZpY2F0aW9ucy4iLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkNvbnRpbnVlIHJlcXVlc3Qgb3IgcmVzcG9uc2Ugd2l0aG91dCBtb2RpZmlj
YXRpb25zLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6
ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXF1ZXN0IG9yIHJlc3Bv
bnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwg
IiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGNvbnRpbnVl
LiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAi
bmFtZSI6ICJpbnRlcmNlcHRXaXRoUmVxdWVzdCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUmVwbGFjZSBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggdGhlIHByb3ZpZGVkIG9uZS4iLAog
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250
aW51ZS4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjog
IlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0
ZWQgTmV0d29yayByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm1ldGhvZCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsImRlc2NyaXB0aW9uIjogIkhUVFAgcmVxdWVzdCBtZXRob2QuIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1
ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBvcmln
aW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJwb3N0RGF0YSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJIVFRQIFBPU1QgcmVxdWVzdCBkYXRhLCBiYXNlNjQtZW5jb2RlZC4iIH0KICAgICAg
ICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMjY2LDEyICsyODQsMTMgQEAKICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm92aWRlIHJlc3BvbnNlIGNvbnRlbnQgZm9yIGFu
IGludGVyY2VwdGVkIHJlc3BvbnNlLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIs
ICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayBy
ZXNwb25zZSB0byBtb2RpZnkuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVu
dCIsICJ0eXBlIjogInN0cmluZyIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2
NEVuY29kZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNv
bnRlbnQgd2FzIHNlbnQgYXMgYmFzZTY0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImNvbnRlbnQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJiYXNlNjRFbmNvZGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUcnVlLCBpZiBjb250ZW50IHdhcyBzZW50
IGFzIGJhc2U2NC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtaW1lVHlwZSIsICJ0
eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJNSU1FIFR5
cGUgZm9yIHRoZSBkYXRhLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1cyIs
ICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRU
UCByZXNwb25zZSBzdGF0dXMgY29kZS4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1
bm1vZGlmaWVkLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1c1RleHQiLCAi
dHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCBy
ZXNwb25zZSBzdGF0dXMgdGV4dC4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1v
ZGlmaWVkLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6
ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9u
c2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIg
fQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMi
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJz
LiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAorICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JUeXBlIiwgIiRyZWYiOiAiUmVzb3VyY2VFcnJvclR5
cGUiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRGVsaXZlciBlcnJvciByZWFz
b24gZm9yIHRoZSByZXF1ZXN0IGZhaWx1cmUuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0K
ICAgICBdLApAQCAtMzQ4LDkgKzM2NywxNyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNoZWRSZXNvdXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNo
ZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdEludGVyY2VwdGVkIiwKKyAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhUVFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNl
cHRlZC4gVGhlIGZyb250ZW5kIG11c3QgcmVzcG9uZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJj
ZXB0Q29udGludWU8L2NvZGU+LCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9j
b2RlPmAgb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byBy
ZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAi
ZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBD
b3JyZXNwb25kcyB3aXRoIGFuIGVhcmxpZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2Vu
dDwvY29kZT4uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVm
IjogIlJlcXVlc3QiLCAiZGVzY3JpcHRpb24iOiAiT3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRo
YXQgd291bGQgcHJvY2VlZCBpZiB0aGlzIGlzIGNvbnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRl
cmNlcHRlZCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJl
c3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3
aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdv
cmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNl
LiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNl
IGhhcyBiZWVuIGludGVyY2VwdGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxj
b2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50
ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2RlPmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAog
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxp
ZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVzcG9uc2UiLCAiJHJlZiI6ICJSZXNwb25zZSIsICJkZXNjcmlw
dGlvbiI6ICJPcmlnaW5hbCByZXNwb25zZSBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0
aGlzIGlzIGNvbnRpbnVlZC4iIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMGM0NDJlZTkwODg3N2QyMDY3ZDY1
ZTg3NDQxNjUyYThjZjAwYzg4ZS4uZDEwYjMyNTUxM2UyYWNhMDZiN2EzN2E4NTcwODZhYTEyYmFk
YzY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTgxMCwxMCArODEwLDE3IEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJj
ZSYgY2FjCiAgICAgfQogfQogCi1ib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
dGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29y
a0FnZW50KCkpCi0gICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHRSZXF1
ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm4gbmV0d29ya0FnZW50LT53aWxsSW50ZXJjZXB0
KHJlcXVlc3QpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sK
KyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50
ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNCw2
ICs4MzEsMTIgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBs
b2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYg
aGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgbmV0d29ya0FnZW50LT5pbnRl
cmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yTmV0d29ya0FnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMDNiZGQ1NWNjOTMwZGUwY2ZjNjFmOGQ5ZTQy
MTBmNDk1MmFhNDYzMy4uMmE0NWE1Yzg5YjNmMGQwOTU4MTE2MmE3ZDg0YzA4NDc1NjM2OTJkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWMuaCIKICNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5o
IgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvclBy
b3h5LmgiCkBAIC0yMzIsOCArMjMzLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZWZh
dWx0QXBwZWFyYW5jZURpZENoYW5nZShQYWdlJiwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAg
ICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYp
OwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0KGNv
bnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgc2hv
dWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVl
c3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xl
KFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAt
NDM3LDggKzQ0MCwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRBcHBlYXJh
bmNlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2Fj
aGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3Rh
dGljIGJvb2wgd2lsbEludGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsK
QEAgLTEyNDksMTEgKzEyNTQsMTkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJgogICAgIHdpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJv
b2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdp
bGxJbnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7Cisg
ICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVx
dWVzdCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCByZXF1ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyNjUsNiArMTI3OCwx
MyBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGxvYWRlci5mcmFtZSgpLCBsb2FkZXIucmVxdWVz
dCgpKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yRnJhbWUobG9hZGVyLmZyYW1lKCkpKQorICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0
SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30K
KwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAg
IEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA5NTRhYWYxMjFh
OWZhNTA3ZDgzYmMxMGFlMzdkZTFmMTI4ZjdkY2ZjLi40MDY2OGExY2I2OWZiNzc0MTZmODI3NmQ5
ZGRkMDE5ODhlNWQwYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtMzAsMTEgKzMwLDIx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0
KTsKK30KKwogYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVy
Y2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpOwogfQogCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwo
Y29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25z
ZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKaW5kZXgg
YjY3ZTg5YjgwYjRlN2E4NTg2Y2FjODFhZGU1ZDU4YTFiY2IwZDQzMS4uNTQzZjViMDMzNWMxZWQ2
ZGQzYzc2NWJiMzFmODExM2MzNDcwNjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaApAQCAtMzYsMTQg
KzM2LDI3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBz
aG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVx
dWVzdChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Kik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNv
bnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGlu
dGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVy
Y2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogfTsKIAoraW5s
aW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CisgICAgaWYgKCFm
cmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNob3VsZEludGVyY2Vw
dFJlcXVlc3RJbnRlcm5hbCgqZnJhbWUsIHJlcXVlc3QpOworfQorCiBpbmxpbmUgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKQEAgLTUzLDYgKzY2LDEyIEBAIGlu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0
UmVzcG9uc2UoY29uc3QgRnJhbWUqCiAgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJlc3BvbnNl
SW50ZXJuYWwoKmZyYW1lLCByZXNwb25zZSk7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmIGhh
bmRsZXIpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hv
dWxkSW50ZXJjZXB0UmVxdWVzdChsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOwor
ICAgIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwor
fQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50
ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXgg
YWZjZGQyYTdmYWZmZTBiZWM5ODIwNzJkODk0YmM4NWM2ZTMwYzQ0Yy4uZGE2YTJjZjk4YWY1YWRj
MGNkNjUyODcyZDYxZWY5Nzg0NmM0YWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNDMsNiAr
NDMsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJGb3Jt
RGF0YS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCkBAIC04NDEsMTIgKzg0MiwxMyBAQCB2b2lkIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9yZXNvdXJjZXNE
YXRhLT5jbGVhcigpOwogICAgIG1fZXh0cmFSZXF1ZXN0SGVhZGVycy5jbGVhcigpOwogCisgICAg
Y29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMo
KTsKIAogICAgIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGZhbHNlKTsKIH0KIAotYm9vbCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQorYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsLCBOZXR3b3JrU3RhZ2Ug
bmV0d29ya1N0YWdlKQogewogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApA
QCAtODU1LDYgKzg1NywxMCBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50
ZXJjZXB0KFVSTCB1cmwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYg
aW50ZXJjZXB0IDogbV9pbnRlcmNlcHRzKSB7CisgICAgICAgIGlmIChpbnRlcmNlcHQubmV0d29y
a1N0YWdlICE9IG5ldHdvcmtTdGFnZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoaW50ZXJjZXB0LnVybC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgYXV0byBzZWFyY2hTdHJpbmdUeXBlID0gaW50ZXJjZXB0LmlzUmVnZXggPyBDb250ZW50
U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpSZWdleCA6IENvbnRlbnRTZWFyY2hV
dGlsaXRpZXM6OlNlYXJjaFN0cmluZ1R5cGU6OkV4YWN0U3RyaW5nOwogICAgICAgICBhdXRvIHJl
Z2V4ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6Y3JlYXRlUmVndWxhckV4cHJlc3Npb25Gb3JT
ZWFyY2hTdHJpbmcoaW50ZXJjZXB0LnVybCwgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUsIHNlYXJj
aFN0cmluZ1R5cGUpOwogICAgICAgICBpZiAocmVnZXgubWF0Y2godXJsU3RyaW5nKSAhPSAtMSkK
QEAgLTg2NCw2ICs4NzAsMTYgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZElu
dGVyY2VwdChVUkwgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCkKK3sKKyAgICBmb3IgKGF1dG8m
IHBlbmRpbmdSZXF1ZXN0IDogbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudmFsdWVzKCkpIHsK
KyAgICAgICAgUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRl
ci5nZXQoKTsKKyAgICAgICAgaWYgKGxvYWRlci0+aWRlbnRpZmllcigpKQorICAgICAgICAgICAg
cGVuZGluZ1JlcXVlc3QtPm1fY29tcGxldGlvbkhhbmRsZXIoJmxvYWRlci0+cmVxdWVzdCgpKTsK
KyAgICB9CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwogdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7CiAg
ICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI5LDYyICsxMDQ1LDY0IEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCi0g
ICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVu
YWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAgY29u
dGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VT
dHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0
aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAg
YXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJz
OjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6
TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3Jr
U3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBu
ZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBJbnRlcmNlcHQgaW50ZXJjZXB0OwogICAgIGlu
dGVyY2VwdC51cmwgPSB1cmw7CiAgICAgaWYgKG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSkKICAgICAg
ICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAg
IGlmIChvcHRpb25hbElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlv
bmFsSXNSZWdleDsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0
cy4KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3Rv
ckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3
b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5l
dHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGludGVyY2VwdC5uZXR3b3JrU3RhZ2UgPSBuZXR3b3JrU3RhZ2UudmFsdWUoKTsK
IAogICAgIGlmICghbV9pbnRlcmNlcHRzLmFwcGVuZElmTm90Q29udGFpbnMoaW50ZXJjZXB0KSkK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJjZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVu
IGlzUmVnZXggYWxyZWFkeSBleGlzdHMiX3M7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpyZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKQordm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFn
ZVN0cmluZywgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBv
cHRpb25hbElzUmVnZXgpCiB7Ci0gICAgaWYgKG5ldHdvcmtTdGFnZVN0cmluZykgewotICAgICAg
ICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBl
cnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICBpZiAoIW5ldHdv
cmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3du
IG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgIH0KLQogICAgIEludGVyY2VwdCBpbnRlcmNlcHQ7CiAgICAg
aW50ZXJjZXB0LnVybCA9IHVybDsKICAgICBpZiAob3B0aW9uYWxDYXNlU2Vuc2l0aXZlKQogICAg
ICAgICBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSA9ICpvcHRpb25hbENhc2VTZW5zaXRpdmU7CiAg
ICAgaWYgKG9wdGlvbmFsSXNSZWdleCkKICAgICAgICAgaW50ZXJjZXB0LmlzUmVnZXggPSAqb3B0
aW9uYWxJc1JlZ2V4OwotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgaW50ZXJjZXB0aW5nIHJlcXVl
c3RzLgorICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVj
dG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5l
dHdvcmtTdGFnZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24g
bmV0d29ya1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9IG5ldHdvcmtTdGFnZS52YWx1ZSgp
OwogCiAgICAgaWYgKCFtX2ludGVyY2VwdHMucmVtb3ZlQWxsKGludGVyY2VwdCkpCiAgICAgICAg
IGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVu
IGlzUmVnZXgiX3M7CiB9CiAKLWJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxsSW50ZXJj
ZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiB7CiAgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSk7CisgICAg
cmV0dXJuIHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVl
c3QpIHx8IHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlc3Bv
bnNlKTsKK30KKworYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghbV9pbnRl
cmNlcHRpb25FbmFibGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hv
dWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCk7CiB9CiAK
IGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwOTIsNyArMTExMCwyMSBAQCBib29s
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcAogICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNl
LnVybCgpKTsKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpLCBOZXR3
b3JrU3RhZ2U6OlJlc3BvbnNlKTsKK30KKwordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Omlu
dGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVyKQoreworICAgIEFTU0VSVCht
X2VuYWJsZWQpOworICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOworCisgICAgU3Ry
aW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGxvYWRlci5pZGVu
dGlmaWVyKCkpOworICAgIGlmIChtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5jb250YWlucyhy
ZXF1ZXN0SWQpKSB7CisgICAgICAgIGhhbmRsZXIoJmxvYWRlci5yZXF1ZXN0KCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNldChyZXF1
ZXN0SWQsIG1ha2VVbmlxdWU8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+KCZsb2FkZXIsIFdURk1v
dmUoaGFuZGxlcikpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2Vw
dGVkKHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVl
c3QoKSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCkBAIC0xMTEyLDE5ICsxMTQ0LDE1MyBAQCB2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNl
SW50ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVz
cG9uc2UsIG51bGxwdHIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVy
Y2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3Ry
aW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcpCiB7CisgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3b3JrU3Rh
Z2VTdHJpbmcpOworICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0YWdlU3Ry
aW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuZXR3b3JrU3RhZ2UudmFs
dWUoKSA9PSBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpIHsKKyAgICAgICAgYXV0byBwZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElk
KTsKKyAgICAgICAgaWYgKHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KSB7CisgICAgICAgICAgICBw
ZW5kaW5nSW50ZXJjZXB0UmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxlcigmcGVuZGluZ0ludGVy
Y2VwdFJlcXVlc3QtPm1fbG9hZGVyLT5yZXF1ZXN0KCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNl
cHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwotICAgIGlmICghcGVuZGluZ0ludGVyY2VwdFJl
c3BvbnNlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNl
cHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICBpZiAocGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlKSB7CisgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9u
ZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXJy
b3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4g
cmVxdWVzdElkIl9zOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
V2l0aFJlcXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nKiBtZXRob2QsIGNvbnN0IFN0cmluZyogdXJsLCBjb25zdCBKU09O
OjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBw
ZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElk
KTsKKyAgICBpZiAocGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXIqIGxv
YWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICAgICAgaWYgKCFsb2Fk
ZXItPmlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgLy8gRG8gbm90IHRocm93IHVwb24gY29u
dGludWUgb2YgY2FuY2VsZWQgcmVxdWVzdHMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgLy8gU2FmZSB0byBjb25zdCBjYXN0IGF0IHRoaXMgcG9pbnQsIHdlIGFyZSBv
bmx5IGFkanVzdGluZyB0aGUgbWV0aG9kIC8gaGVhZGVycyAvIHBvc3QuCisgICAgICAgIFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0ID0gbG9hZGVyLT5yZXF1ZXN0KCk7CisgICAgICAgIGlmICh1cmwp
CisgICAgICAgICAgICByZXF1ZXN0LnNldFVSTChVUkwoeyB9LCAqdXJsKSk7CisgICAgICAgIGlm
IChtZXRob2QpCisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoKm1ldGhvZCk7Cisg
ICAgICAgIGlmIChoZWFkZXJzKSB7CisgICAgICAgICAgICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0
SGVhZGVyczsKKyAgICAgICAgICAgIGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDogKmhlYWRlcnMp
IHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaGVhZGVyVmFsdWU7CisgICAgICAgICAgICAgICAg
aWYgKHZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGV4
cGxpY2l0SGVhZGVycy5hZGQoa2V5LCBoZWFkZXJWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRl
cnMpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocG9zdERhdGEpIHsKKyAgICAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgICAgICAgICBpZiAoIWJhc2U2NERlY29kZSgqcG9z
dERhdGEsIGJ1ZmZlcikpIHsKKyAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUg
dG8gZGVjb2RlIGdpdmVuIHBvc3REYXRhIl9zOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNy
ZWF0ZShidWZmZXIpKTsKKyAgICAgICAgfQorICAgICAgICBwZW5kaW5nUmVxdWVzdC0+bV9jb21w
bGV0aW9uSGFuZGxlcigmcmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBw
ZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOwor
ICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3Ig
Z2l2ZW4gcmVxdWVzdElkIl9zOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBj
b25zdCBTdHJpbmcqIG1pbWVUeXBlLCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBz
dGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMpCit2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogY29udGVudCwgY29uc3Qg
Ym9vbCogYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBz
dGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFk
ZXJzLCBjb25zdCBTdHJpbmcqIGVycm9yVHlwZVN0cmluZykKIHsKKyAgICBhdXRvIHBlbmRpbmdS
ZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAg
IGlmIChwZW5kaW5nUmVxdWVzdCAmJiBlcnJvclR5cGVTdHJpbmcpIHsKKyAgICAgICAgUmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICAg
ICAgaWYgKCFsb2FkZXItPmlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiVW5hYmxlIHRvIGFib3J0IHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2Vk
Il9zOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGF1dG8gZXJyb3JU
eXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JU
eXBlPigqZXJyb3JUeXBlU3RyaW5nKTsKKyAgICAgICAgaWYgKCFlcnJvclR5cGUpIHsKKyAgICAg
ICAgICAgIGVycm9yU3RyaW5nID0gIlVua25vd24gZXJyb3IgdHlwZSJfczsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOworICAgICAg
ICBzd2l0Y2ggKGVycm9yVHlwZS52YWx1ZSgpKSB7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkdlbmVyYWw6CisgICAgICAgICAg
ICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9h
ZGVyLT51cmwoKSwgIlJlcXVlc3QgaW50ZXJjZXB0ZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6
OkdlbmVyYWwpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkFjY2Vzc0NvbnRyb2w6CisgICAg
ICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwg
MCwgbG9hZGVyLT51cmwoKSwgIkFjY2VzcyBkZW5pZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6
OkFjY2Vzc0NvbnRyb2wpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkNhbmNlbGxhdGlvbjoK
KyAgICAgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCBsb2FkZXItPnVybCgpLCAiUmVxdWVzdCBjYW5jZWxlZCJfcywgUmVzb3VyY2VFcnJv
cjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0
OgorICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IHRpbWVkIG91dCJfcywgUmVzb3VyY2VF
cnJvcjo6VHlwZTo6VGltZW91dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGxvYWRlci0+ZGlkRmFpbChlcnJvcik7CisgICAgICAgIHBl
bmRpbmdSZXF1ZXN0LT5tX2NvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChwZW5kaW5nUmVxdWVzdCAmJiAoIXN0YXR1cyB8fCAhc3RhdHVz
VGV4dCB8fCAhbWltZVR5cGUgfHwgIWhlYWRlcnMpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0g
InN0YXR1cywgc3RhdHVzVGV4dCwgbWltZVR5cGUgYW5kIGhlYWRlcnMgbXVzdCBiZSBzcGVjaWZp
ZWQgd2hlbiBmdWxmaWxsaW5nIGludGVyY2VwdGVkIHJlcXVlc3QiX3M7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKHBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJlZlB0cjxSZXNv
dXJjZUxvYWRlcj4gbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAg
ICAgICBpZiAoIWxvYWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICBlcnJvclN0cmlu
ZyA9ICJVbmFibGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nl
c3NlZCJfczsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBpZiAoY29udGVudCkgeworICAgICAgICAgICAg
aWYgKGJhc2U2NEVuY29kZWQgJiYgKmJhc2U2NEVuY29kZWQpIHsKKyAgICAgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2Rl
KCpjb250ZW50LCBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0g
IlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gY29udGVudCJfczsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LT51dGY4KCku
ZGF0YSgpLCBjb250ZW50LT51dGY4KCkubGVuZ3RoKCkpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgICAgIC8vIE1pbWlj
IGRhdGEgVVJMIGxvYWQgYmVoYXZpb3IgLSByZXBvcnQgZGlkUmVjZWl2ZVJlc3BvbnNlICYgZGlk
RmluaXNoTG9hZGluZy4KKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwZW5kaW5n
UmVxdWVzdC0+bV9sb2FkZXItPnVybCgpLCAqbWltZVR5cGUsIGRhdGEtPnNpemUoKSwgU3RyaW5n
KCkpOworICAgICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNl
OjpJbnNwZWN0b3JPdmVycmlkZSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2Rl
KCpzdGF0dXMpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgqc3RhdHVzVGV4
dCk7CisgICAgICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOworICAgICAgICBmb3Ig
KGF1dG8mIGhlYWRlciA6ICpoZWFkZXJzKSB7CisgICAgICAgICAgICBTdHJpbmcgaGVhZGVyVmFs
dWU7CisgICAgICAgICAgICBpZiAoaGVhZGVyLnZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkp
CisgICAgICAgICAgICAgICAgZXhwbGljaXRIZWFkZXJzLmFkZChoZWFkZXIua2V5LCBoZWFkZXJW
YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhX
VEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCByZXNwb25zZS5taW1lVHlwZSgpKTsK
KyAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1
ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
IChidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVCdWZm
ZXIoV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291
cmNlKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1l
dHJpY3MoKSk7CisgICAgICAgIH0pOworICAgICAgICBwZW5kaW5nUmVxdWVzdC0+bV9jb21wbGV0
aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1dG8g
cGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRh
a2UocmVxdWVzdElkKTsKICAgICBpZiAoIXBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSkgewogICAg
ICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZv
ciBnaXZlbiByZXF1ZXN0SWQiX3M7CkBAIC0xMTUyLDE2ICsxMzE4LDE2IEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zCiAgICAgfQogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVE
YXRhOwotICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CisgICAgaWYgKGJhc2U2NEVuY29kZWQgJiYg
KmJhc2U2NEVuY29kZWQgJiYgY29udGVudCkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVm
ZmVyOwotICAgICAgICBpZiAoIWJhc2U2NERlY29kZShjb250ZW50LCBidWZmZXIpKSB7CisgICAg
ICAgIGlmICghYmFzZTY0RGVjb2RlKCpjb250ZW50LCBidWZmZXIpKSB7CiAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJVbmFibGUgdG8gZGVjb2RlIGdpdmVuIGNvbnRlbnQiX3M7CiAgICAgICAg
ICAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25z
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG92ZXJyaWRlRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQudXRmOCgp
LmRhdGEoKSwgY29udGVudC51dGY4KCkubGVuZ3RoKCkpOworICAgIH0gZWxzZSBpZiAoY29udGVu
dCkKKyAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC0+
dXRmOCgpLmRhdGEoKSwgY29udGVudC0+dXRmOCgpLmxlbmd0aCgpKTsKIAogICAgIHBlbmRpbmdJ
bnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZChvdmVycmlkZVJlc3BvbnNlLCBvdmVycmlkZURhdGEp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmgKaW5kZXggYmZkMTMxZTliNTg1NmM4NGRhNzcyNDgwNWU3MTM5N2I3
Yzc0ODZhOS4uNjk2ZGQxMTI1NWM4OTRmM2Y2NmY0YTI5MWM3MmM1Y2ViNGEzNDY3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCkBAIC04OCwxMCArODgsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VyaWFs
aXplZENlcnRpZmljYXRlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0
cmluZyogc2VyaWFsaXplZENlcnRpZmljYXRlKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmVXZWJT
b2NrZXQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
KiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4mKSBmaW5hbDsKICAgICB2b2lkIHNldEludGVyY2VwdGlvbkVuYWJsZWQoRXJyb3JT
dHJpbmcmLCBib29sIGVuYWJsZWQpIGZpbmFsOwotICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKSBm
aW5hbDsKLSAgICB2b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4
LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7Ci0gICAgdm9pZCBpbnRl
cmNlcHRDb250aW51ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKSBmaW5h
bDsKLSAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2Rl
ZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmlu
Zyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKSBmaW5hbDsKKyAgICB2
b2lkIGFkZEludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogaXNSZWdleCkgZmluYWw7CisgICAgdm9pZCByZW1vdmVJbnRlcmNlcHRpb24o
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3Rh
Z2VTdHJpbmcsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgp
IGZpbmFsOworICAgIHZvaWQgaW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFs
OworICAgIHZvaWQgaW50ZXJjZXB0V2l0aFJlcXVlc3QoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nKiBtZXRob2QsIGNvbnN0IFN0cmluZyogdXJsLCBj
b25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpIGZpbmFs
OworICAgIHZvaWQgaW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogY29udGVudCwgY29uc3QgYm9vbCogYmFzZTY0
RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0
IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBT
dHJpbmcqIGVycm9yVHlwZSkgZmluYWw7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24KICAgICB2b2lkIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKCk7CkBAIC0xMTgsOSArMTE5LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciYpOwog
ICAgIHZvaWQgc2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAgICAgdm9pZCBkaWRTY2hlZHVsZVN0eWxl
UmVjYWxjdWxhdGlvbihEb2N1bWVudCYpOwotICAgIGJvb2wgd2lsbEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJik7CiAKICAgICB2b2lkIHNl
YXJjaE90aGVyUmVxdWVzdHMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJl
ZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3Vs
dD4+Jik7CiAgICAgdm9pZCBzZWFyY2hJblJlcXVlc3QoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBi
b29sIGlzUmVnZXgsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6Okdl
bmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpOwpAQCAtMTQwLDcgKzE0Myw5IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSwgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUpOwogCi0g
ICAgYm9vbCBzaG91bGRJbnRlcmNlcHQoVVJMKTsKKyAgICB1c2luZyBOZXR3b3JrU3RhZ2UgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U7CisgICAgYm9vbCBzaG91
bGRJbnRlcmNlcHQoVVJMLCBOZXR3b3JrU3RhZ2UpOworICAgIHZvaWQgY29udGludWVQZW5kaW5n
UmVxdWVzdHMoKTsKICAgICB2b2lkIGNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpOwogCiAgICAg
V2ViU29ja2V0KiB3ZWJTb2NrZXRGb3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQp
OwpAQCAtMTUzLDYgKzE1OCwyMCBAQCBwcml2YXRlOgogCiAgICAgZG91YmxlIHRpbWVzdGFtcCgp
OwogCisgICAgY2xhc3MgUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QgeworICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCk7CisgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIDog
bV9sb2FkZXIobG9hZGVyKQorICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICB7IH0KKworICAgICAgICBQZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdCgpID0gZGVmYXVsdDsKKyAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVy
PiBtX2xvYWRlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QqKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICB9OworCiAgICAgY2xhc3MgUGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlKTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC0yMDQsMTUgKzIyMywxOCBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgdXJsOwogICAg
ICAgICBib29sIGNhc2VTZW5zaXRpdmUgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgaXNSZWdleCB7
IGZhbHNlIH07CisgICAgICAgIE5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UgeyBOZXR3b3JrU3Rh
Z2U6OlJlc3BvbnNlIH07CiAKICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
bnRlcmNlcHQmIG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdXJs
ID09IG90aGVyLnVybAogICAgICAgICAgICAgICAgICYmIGNhc2VTZW5zaXRpdmUgPT0gb3RoZXIu
Y2FzZVNlbnNpdGl2ZQotICAgICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdl
eDsKKyAgICAgICAgICAgICAgICAmJiBpc1JlZ2V4ID09IG90aGVyLmlzUmVnZXgKKyAgICAgICAg
ICAgICAgICAmJiBuZXR3b3JrU3RhZ2UgPT0gb3RoZXIubmV0d29ya1N0YWdlOwogICAgICAgICB9
CiAgICAgfTsKICAgICBWZWN0b3I8SW50ZXJjZXB0PiBtX2ludGVyY2VwdHM7CisgICAgSGFzaE1h
cDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdD4+IG1fcGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3RzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9w
dHI8UGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlPj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2Vz
OwogCiAgICAgLy8gRklYTUU6IEluc3BlY3Rvck5ldHdvcmtBZ2VudCBzaG91bGQgbm90IGJlIGF3
YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyMzFlZGVjOGNjYzcxZDY1
MjE3MTA2MzYzZjVjYzM0OTkwYTE2NDdlLi42NTllMmZlODkwN2IzMTU5NzY2MGE3ZGRjNDhiOTQ1
ZDMzZjBmNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg0Niw3ICs4NDYsNyBAQCBSZXNvdXJjZUVycm9yT3I8
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdQogCiAgICAgcmVxdWVzdC51cGRhdGVSZWZlcnJlclBvbGljeShkb2N1bWVudCgpID8g
ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA6IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVy
V2hlbkRvd25ncmFkZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
SW50ZXJjZXB0UmVxdWVzdCgmZnJhbWUsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQorICAg
IGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQoJmZyYW1lLCByZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmVxdWVzdC5zZXRDYWNoaW5nUG9saWN5
KENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZyk7CiAKICAgICBhdXRvJiBwYWdlID0gKmZy
YW1lLnBhZ2UoKTsKQEAgLTE0MzYsNyArMTQzNiw3IEBAIFZlY3RvcjxSZWY8U1ZHSW1hZ2U+PiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsQ2FjaGVkU1ZHSW1hZ2VzKCkgY29uc3QKIAogUmVzb3Vy
Y2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChmcmFtZSgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KGZy
YW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksICJJbnNwZWN0b3IgaW50ZXJjZXB0Il9zIH0p
OwogCiAgICAgaWYgKHJlcXVlc3QuY2hhcnNldCgpLmlzRW1wdHkoKSAmJiAodHlwZSA9PSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6
OkNTU1N0eWxlU2hlZXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwppbmRleCAx
YzgxMjYwZDhkYjIzNDhjMDBiZmVkOTViN2JjNzAyMDE1MDBjNWRlLi4wMzI2ODczZjIzOGZmZjdm
ZWJjMTBhOWNjODYxNWE2YjM2YTM5ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdl
ci5qcwpAQCAtMTYxLDcgKzE2MSw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29y
a01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJp
ZGUuaXNSZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IElu
c3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdv
cmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zNjQsNyArMzY0LDcg
QEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAg
ICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNl
U2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlk
ZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2Vu
ZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgICAgIHN0
YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2Us
CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMu
MCk6IE5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0zOTcsNyArMzk3
LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwK
ICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXND
YXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVy
cmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFj
a2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgICAg
IHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9u
c2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1Mg
MTMuMCk6IE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC05MTEs
NyArOTExLDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICBsZXQgdXJsID0gV0kudXJsV2l0aG91dEZyYWdtZW50KHJl
c3BvbnNlLnVybCk7CiAgICAgICAgIGxldCBsb2NhbFJlc291cmNlT3ZlcnJpZGUgPSB0aGlzLmxv
Y2FsUmVzb3VyY2VPdmVycmlkZUZvclVSTCh1cmwpOwogICAgICAgICBpZiAoIWxvY2FsUmVzb3Vy
Y2VPdmVycmlkZSB8fCBsb2NhbFJlc291cmNlT3ZlcnJpZGUuZGlzYWJsZWQpIHsKLSAgICAgICAg
ICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUocmVxdWVzdElkKTsKKyAg
ICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUocmVxdWVzdElk
LCBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEzNzcsNyArMTM3Nyw3IEBAIFdJ
Lk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAg
IGNhc2VTZW5zaXRpdmU6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAg
ICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAg
ICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51
bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKICAgICAgICAgfTsKIAogICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIC8gTmV0
d29yay5yZW1vdmVJbnRlcmNlcHRpb24gZGlkIG5vdCBleGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtP
YnNlcnZlci5qcwppbmRleCA1OWMyOWM5YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgwMGFh
Li5hNmU2ZGVmYWVlZGYxMjkxNTg4YmViODcxMDBlMDJmNzZjZjMzMjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
TmV0d29ya09ic2VydmVyLmpzCkBAIC0xMDgsOCArMTA4LDggQEAgV0kuTmV0d29ya09ic2VydmVy
ID0gY2xhc3MgTmV0d29ya09ic2VydmVyIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5EaXNwYXRj
aGVyCiAgICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiAgICAgfQogCi0gICAgcmVz
cG9uc2VJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIHJlc3BvbnNlKQorICAgIHJlc3BvbnNlSW50ZXJj
ZXB0ZWQocmVxdWVzdElkLCByZXF1ZXN0KQogICAgIHsKLSAgICAgICAgV0kubmV0d29ya01hbmFn
ZXIucmVzcG9uc2VJbnRlcmNlcHRlZCh0aGlzLl90YXJnZXQsIHJlcXVlc3RJZCwgcmVzcG9uc2Up
OworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNwb25zZUludGVyY2VwdGVkKHRoaXMuX3Rh
cmdldCwgcmVxdWVzdElkLCByZXF1ZXN0KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGI4
ZGNjYWQyYzJjZjhkMDAwMTQwMDQwN2NhY2E2ZTI3YjFmODgyNDkuLjQyZjNiNDI4OTQyMzQ5ZmJh
YmU4MWQzMWE2NWJiZmY5NzE2YjA4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
ZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0
ZWdpZXMuaD4KQEAgLTIzMCw4ICsyMzEsMTcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2No
ZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKIAog
ICAgIGlmICghdHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlciwg
dHJhY2tpbmdQYXJhbWV0ZXJzKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRo
IHRoZSBOZXR3b3JrUHJvY2VzcyIpOwotICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1By
b2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhp
bXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOwotICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciB8fCAhSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNl
cHRSZXF1ZXN0KHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3Qo
KSkpIHsKKyAgICAgICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJj
ZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lKHJlc291cmNlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QocmVzb3Vy
Y2VMb2FkZXIsIFt0aGlzLCBwcm90ZWN0ZWRSZXNvdXJjZUxvYWRlciA9IG1ha2VSZWZQdHIoJnJl
c291cmNlTG9hZGVyKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCByZXNvdXJjZV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0KiByZXF1
ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0KQorICAgICAgICAgICAgICAg
IHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcygqcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIs
ICpyZXF1ZXN0LCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIFdFQkxPQURFUlNUUkFURUdZ
X1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5
IGFueSBoYW5kbGVycyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3ODhhNDViNzczZDAyNzI2ZTRiYWY0Y2YwZTg0Yzdk
OTY3YTQwMGIuLjliZGFhMDVkM2RlYjhlMWJkZDhmZmIwOTZiZDBjNDE5ZjkxMDg5NWIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRt
YW5AZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0
IGludGVyY2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9u
IHRvIHRoZSBOZXR3b3JrCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3Jr
LmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBiZSBj
b250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2FuIG5v
dyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qczoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92
ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWw6CisKIDIwMjAtMDUtMTIgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXVtXSzFd
IHJlcXVlc3RBbmltYXRpb25GcmFtZSBkb2Vzbid0IHdvcmsgc2luY2UgcjI0NDE4MiBpbiBBY2Nl
bGVyYXRlZCBDb21wb3NpdGluZyBtb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCmluZGV4IGEwMjY0
OWQ1NmJkYjNkMjg1YzFmMGQ3ZjgwMGNmZTQxMDg5MjI2NDEuLjgzMWE2MWY2Nzg1ZTQ0ODhiMTJk
N2RmZGVmMWZlNjZkMzc1NTEyMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCkBAIC04NywxMiAr
ODcsMTQgQEAgVGVzdFBhZ2UucnVuVGVzdCA9IHdpbmRvdy5ydW5UZXN0ID0gZnVuY3Rpb24oKQog
ICAgIGlmICh0eXBlb2YgdGVzdEZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgIGFs
ZXJ0KCJGYWlsZWQgdG8gc2VuZCB0ZXN0KCkgYmVjYXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4i
KTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBsZXQgdXJsID0gdGVzdFJ1bm5lci5pbnNwZWN0b3JUZXN0U3R1YlVSTDsKICAg
ICBpZiAoIXVybCkgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIG9idGFpbiBpbnNwZWN0b3Ig
dGVzdCBzdHViIFVSTC4iKTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5Jbml0aWFsaXphdGlvbk1ldGhv
ZHNJbkZyb250ZW5kKGluaXRpYWxpemVycykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZTQ4ZmQ3Y2NkOTlkMDRmNjI3ZGZhYTAwMzM3ZTlhMDkxNDFlMmUxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24u
CisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9u
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogc2V0VXAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3
b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0Q29u
dGludWUKK1Jlc3BvbnNlIGRhdGE6ICd7ImFscGhhIjoiYmV0YSIsImdhbW1hIjoxMjM0NX0nCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1
ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0V2l0aFJlcXVlc3QKK3RleHQ6IGludGVyY2VwdGVkIHJl
cXVlc3QKKworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yayByZXF1ZXN0IGludGVyY2Vw
dGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXNwb25zZQordGV4dDogaW50
ZXJjZXB0ZWQgZGF0YQorc3RhdHVzOiAyMDAKK3N0YXR1c1RleHQ6IE9LCittaW1lVHlwZTogYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtCitteS1oZWFkZXI6IG15LXZhbHVlCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0
ZWQuaW50ZXJjZXB0V2l0aFJlc3BvbnNlV2l0aEVycm9yCitSZXF1ZXN0IGVycm9yOiAnUmVxdWVz
dCBjYW5jZWxlZCcKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ4Y2Q4ODYxYmVhYzJjZDAxMTNlNDAx
N2VkYzQyM2M2YTExZTU5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKQEAgLTAsMCArMSwxNzcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBmZXRjaERhdGEoKSB7
CisgICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJ3Jlc291cmNl
cy9kYXRhLmpzb24nKTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRleHQ6IGF3YWl0
IHJlc3BvbnNlLnRleHQoKSwKKyAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLAor
ICAgICAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCwKKyAgICAgICAgICAg
IG1pbWVUeXBlOiByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyksCisgICAgICAg
ICAgICBoZWFkZXI6IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdteS1oZWFkZXInKSwKKyAgICAgICAg
fTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiBlLm1lc3NhZ2U7CisgICAgfQor
fQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBQcm90b2NvbFRlc3QuY3Jl
YXRlQXN5bmNTdWl0ZSgiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiIpOworCisgICAgZnVu
Y3Rpb24gcHJpbnRGZXRjaFJlc3VsdChyZXN1bHQpCisgICAgeworICAgICAgICBQcm90b2NvbFRl
c3QubG9nKCJ0ZXh0OiAiICsgcmVzdWx0LnRleHQpOworICAgICAgICBQcm90b2NvbFRlc3QubG9n
KCJzdGF0dXM6ICIgKyByZXN1bHQuc3RhdHVzKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygi
c3RhdHVzVGV4dDogIiArIHJlc3VsdC5zdGF0dXNUZXh0KTsKKyAgICAgICAgUHJvdG9jb2xUZXN0
LmxvZygibWltZVR5cGU6ICIgKyByZXN1bHQubWltZVR5cGUpOworICAgICAgICBQcm90b2NvbFRl
c3QubG9nKCJteS1oZWFkZXI6ICIgKyByZXN1bHQuaGVhZGVyKTsKKyAgICB9CisKKyAgICBsZXQg
dXJsOworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInNldFVwIiwKKyAg
ICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBbcmVzdWx0MSwgcmVzdWx0Miwg
e3Jlc3VsdH1dID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5lbmFibGUiLCBwYXJhbXM6
IHt9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHtt
ZXRob2Q6ICJOZXR3b3JrLmVuYWJsZSIsIHBhcmFtczoge319KSwKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUi
LCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImRvY3VtZW50LlVS
TCIsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3Rv
Y29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5zZXRJbnRlcmNlcHRpb25FbmFibGVk
IiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsCisgICAgICAg
ICAgICAgICAgfX0pLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGxldCBiYXNlVVJM
ID0gcmVzdWx0LnZhbHVlLnN1YnN0cmluZygwLCByZXN1bHQudmFsdWUubGFzdEluZGV4T2YoIi8i
KSk7CisgICAgICAgICAgICB1cmwgPSBiYXNlVVJMICsgIi9yZXNvdXJjZXMvZGF0YS5qc29uIjsK
KyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9k
OiAiTmV0d29yay5hZGRJbnRlcmNlcHRpb24iLCBwYXJhbXM6IHsgdXJsLCBzdGFnZTogInJlcXVl
c3QiIH19KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVy
Y2VwdGVkLmludGVyY2VwdENvbnRpbnVlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGNv
bnRpbnVlIGludGVyY2VwdGVkIHJlcXVlc3QuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAg
ICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAgICAgICAgbGV0
IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5h
bGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0
aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBl
eHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVx
dWVzdEludGVyY2VwdGVkIn0pLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIC8vIExl
dCB0aGUgbG9hZCBjb250aW51ZS4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRdID0gYXdh
aXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0
Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0
Lm9iamVjdElkLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLAorICAg
ICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2Fp
dENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5y
ZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHN0YWdlOiAicmVxdWVzdCIsCisgICAgICAg
ICAgICAgICAgfX0pLAorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBQcm90b2NvbFRlc3Qu
bG9nKCJSZXNwb25zZSBkYXRhOiAnIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZS50ZXh0LnRy
aW0oKSArICInIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJ
bnRlcmNlcHRlZC5pbnRlcmNlcHRXaXRoUmVxdWVzdCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
VGVzdCBmdWxmaWxsIGludGVyY2VwdGVkIHJlcXVlc3Qgd2l0aCByZXNwb25zZS4iLAorICAgICAg
ICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQg
aXQuCisgICAgICAgICAgICBsZXQgW2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVu
dF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9j
b2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoKSIsCisgICAgICAgICAg
ICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQo
e2V2ZW50OiAiTmV0d29yay5yZXF1ZXN0SW50ZXJjZXB0ZWQifSksCisgICAgICAgICAgICBdKTsK
KworICAgICAgICAgICAgLy8gRnVsZmlsbCB0aGUgcmVxdWVzdCB3aXRoIGRhdGEuCisgICAgICAg
ICAgICBsZXQgW2ZldGNoUmVzdWx0XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdh
aXRQcm9taXNlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VPYmplY3RJ
ZDogZmV0Y2hSZXN1bHRQcm9taXNlLnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmlu
dGVyY2VwdFdpdGhSZXF1ZXN0IiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAgICAgICAgICAg
ICAgICB1cmw6IHVybC5yZXBsYWNlKCdkYXRhLmpzb24nLCAnZGF0YTIuanNvbicpLAorICAgICAg
ICAgICAgICAgIH19KSwKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0
LmxvZygidGV4dDogIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZS50ZXh0KTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0
d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdp
dGhSZXNwb25zZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBmdWxmaWxsIGludGVyY2Vw
dGVkIHJlcXVlc3Qgd2l0aCByZXNwb25zZS4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAg
ICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAgICBsZXQg
W2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFs
bChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRo
b2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIGV4
cHJlc3Npb246ICJmZXRjaERhdGEoKSIsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAg
ICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQoe2V2ZW50OiAiTmV0d29yay5yZXF1
ZXN0SW50ZXJjZXB0ZWQifSksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgLy8gRnVs
ZmlsbCB0aGUgcmVxdWVzdCB3aXRoIGRhdGEuCisgICAgICAgICAgICBsZXQgW2ZldGNoUmVzdWx0
XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2Nv
bC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdhaXRQcm9taXNlIiwgcGFyYW1zOiB7
CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VPYmplY3RJZDogZmV0Y2hSZXN1bHRQcm9taXNl
LnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1
ZQorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2Nv
bC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlIiwg
cGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVu
dC5wYXJhbXMucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAg
aGVhZGVyczogeyAibXktaGVhZGVyIjogIm15LXZhbHVlIiB9LAorICAgICAgICAgICAgICAgICAg
ICBtaW1lVHlwZTogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRlbnQ6IGJ0b2EoImludGVyY2VwdGVkIGRhdGEiKSwKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZTY0RW5jb2RlZDogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAg
ICBdKTsKKyAgICAgICAgICAgIHByaW50RmV0Y2hSZXN1bHQoZmV0Y2hSZXN1bHQucmVzdWx0LnZh
bHVlKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2Vw
dGVkLmludGVyY2VwdFdpdGhSZXNwb25zZVdpdGhFcnJvciIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiVGVzdCBhYm9ydCBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggZXJyb3IuIiwKKyAgICAgICAg
YXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0
LgorICAgICAgICAgICAgbGV0IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRd
ID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29s
LmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAg
ICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiLAorICAgICAgICAgICAg
ICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtl
dmVudDogIk5ldHdvcmsucmVxdWVzdEludGVyY2VwdGVkIn0pLAorICAgICAgICAgICAgXSk7CisK
KyAgICAgICAgICAgIC8vIEFib3J0IHRoZSByZXF1ZXN0IGFzIGNhbmNlbGVkLgorICAgICAgICAg
ICAgbGV0IFtmZXRjaFJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmF3YWl0
UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlT2JqZWN0SWQ6
IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAgICAgICAgICAg
IHJldHVybkJ5VmFsdWU6IHRydWUsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAg
ICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVzcG9uc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dElkOiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAg
ICAgIGVycm9yVHlwZTogIkNhbmNlbGxhdGlvbiIsCisgICAgICAgICAgICAgICAgfX0pLAorICAg
ICAgICAgICAgXSk7CisgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJSZXF1ZXN0IGVycm9y
OiAnIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZSArICInIik7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJj
ZXB0aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVy
cmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sCmluZGV4IDQ0ODA2NDIwMDQ0NzY5N2ZiMDdmNDE2
ZTk3ODYzOThlMDAzZDI0NjAuLmQ2NmUxNDBlYjcxNzg2NDdjMzg4NjI5YjBkMTNlMWFhMDFhMDMw
YzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291
cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2Uu
aHRtbApAQCAtNDYsNyArNDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIC8vIExl
dCB0aGUgbG9hZCBjb250aW51ZS4KICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdv
cmsucmVzcG9uc2VSZWNlaXZlZCJ9KSwKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2Nv
bC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJh
bXM6IHtyZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJlcXVlc3RJZH19KSwKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdv
cmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHtyZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3Qu
cGFyYW1zLnJlcXVlc3RJZCwgc3RhZ2U6ICJyZXNwb25zZSJ9fSksCiAgICAgICAgICAgICBdKTsK
ICAgICAgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJSZXNwb25zZSByZWNlaXZlZC4iKTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEy
Lmpzb24gYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YTIuanNv
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ODZjYTQ5NGMxZGYzOTZiM2Q5ODIxN2MxMzhmYjcxNTg4MWYzMmE1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2RhdGEyLmpzb24KQEAgLTAsMCArMSBAQAoraW50ZXJjZXB0ZWQgcmVxdWVzdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400431</attachid>
            <date>2020-05-27 23:36:20 -0700</date>
            <delta_ts>2020-05-28 14:46:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200527233619.patch</filename>
            <type>text/plain</type>
            <size>66940</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTk5NDI3ZDM3MjJjZWNkZDk3YTYxMDkzNGJjODUzZGQ2MGNlNGM2Li41NWIxOTQwN2Y1YjI5MGY0
ZmM5Njc3N2Q0NmQzMzNiMGJhYzY3OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNS0xMiAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRml4IGV4aXN0aW5nIHVz
YWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlNDIGFuZCBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2YTNmNDc4MWFmNjI1ZGY1YTg4OWJiOWJhODkxYmIwZmMxN2E4NjFhLi5jNjVjNmY4M2Y0OTcw
MTViNzk3NTFhMzg1OGU1MzA2NTNiMzliMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAK
KzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAK
KyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJl
cXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZp
ZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAg
J3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVl
c3RJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3Zl
SW50ZXJjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3Bv
bnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0wNS0xMiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3N0ZXIg
c2V0IGFmdGVyIHBsYXliYWNrIGJlZ2lucyBzaG91bGQgYmUgaWdub3JlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggMzhjN2MzMDY0YmVlNzRjOGQyOTExMGRjYzA3NDA3Zjg2Yzk0YjljOS4u
MjA3M2Y3YTc4OWM4MjBlYzI2MDExNGI2ZGI3ZDA2MGU2ODk4YzAzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDUtMTMgIFBhdmVsICA8cGF2ZWwuZmVs
ZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVl
c3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRp
b24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBi
ZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2Fu
IG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVycmlk
ZSk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxSZXNv
dXJjZU92ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXF1
ZXN0SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLl9o
YW5kbGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtP
YnNlcnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKyAgICAgICAgKFdJLk5ldHdv
cmtPYnNlcnZlcik6CisKIDIwMjAtMDUtMTEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5ldHdvcms6IFRpbWluZzogZ2FwcyBhcm91
bmQgdGhlICJSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHRpbWluZyBkYXRhIiBtZXNzYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDE1YTFmYTlhYjRiNTg5OGY0MWM3OTY5NmY3N2IxNGY2MDMwODU5YmIuLjBjZGIxYjIx
MzUyMTg5NmU3N2Q1NDM3ZDNhZDkxYTQwNzk4N2QxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29y
ayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9k
aWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAg
ICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIwLTA1LTEyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsgZHJh
ZyBhbmQgZHJvcCBoYW5kbGluZyBpbiBwcmVwYXJhdGlvbiBmb3IgR1RLNApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgppbmRl
eCA3NzdhNTQxNjZlZDY2NjQ1NjFiM2Y4MjQ5YTZhYmI0YWM1OWQwNDgwLi41NjllOTk2ZjJhOWI1
NDA2N2I4MzY2YzdhM2UyZmFiNjViYmYzMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbgpAQCAtMTU1LDcgKzE1NSwx
MyBAQAogICAgICAgICAgICAgImlkIjogIk5ldHdvcmtTdGFnZSIsCiAgICAgICAgICAgICAidHlw
ZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVudCBzdGFn
ZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKLSAgICAgICAgICAgICJlbnVtIjogWyJyZXNwb25z
ZSJdCisgICAgICAgICAgICAiZW51bSI6IFsicmVxdWVzdCIsICJyZXNwb25zZSJdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJSZXNvdXJjZUVycm9yVHlwZSIsCisg
ICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKKyAgICAgICAgICAgICJl
bnVtIjogWyJHZW5lcmFsIiwgIkFjY2Vzc0NvbnRyb2wiLCAiQ2FuY2VsbGF0aW9uIiwgIlRpbWVv
dXQiXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC0yMzgsMTAgKzI0
NCwxMCBAQAogICAgICAgICAgICAgIm5hbWUiOiAiYWRkSW50ZXJjZXB0aW9uIiwKICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJBZGQgYW4gaW50ZXJjZXB0aW9uLiIsCiAgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjog
InN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0
cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgcGF0dGVybiB0byBpbnRlcmNlcHQsIGludGVyY2Vw
dCBldmVyeXRoaW5nIGlmIG5vdCBzcGVjaWZpZWQgb3IgZW1wdHkiIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJkZXNjcmlwdGlv
biI6ICJTdGFnZSB0byBpbnRlcmNlcHQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Y2FzZVNlbnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJh
bWV0ZXIuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjog
ImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJl
YXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0sCi0gICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0aGlzIGFwcGxpZXMg
dG8gYWxsIG5ldHdvcmsgc3RhZ2VzLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNS
ZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lv
bi4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMjQ5LDE2ICsy
NTUsMjggQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZW1vdmUgYW4gaW50ZXJjZXB0
aW9uLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdl
IHRvIGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0
aXZlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJJZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0s
Ci0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAg
cGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0
d29yayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5
cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVl
LCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAg
ICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJp
bnRlcmNlcHRDb250aW51ZSIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udGludWUg
YW4gaW50ZXJjZXB0aW9uIHdpdGggbm8gbW9kaWZpY2F0aW9ucy4iLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkNvbnRpbnVlIHJlcXVlc3Qgb3IgcmVzcG9uc2Ugd2l0aG91dCBtb2RpZmlj
YXRpb25zLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6
ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXF1ZXN0IG9yIHJlc3Bv
bnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwg
IiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGNvbnRpbnVl
LiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAi
bmFtZSI6ICJpbnRlcmNlcHRXaXRoUmVxdWVzdCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUmVwbGFjZSBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggdGhlIHByb3ZpZGVkIG9uZS4iLAog
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250
aW51ZS4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjog
IlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0
ZWQgTmV0d29yayByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm1ldGhvZCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsImRlc2NyaXB0aW9uIjogIkhUVFAgcmVxdWVzdCBtZXRob2QuIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1
ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBvcmln
aW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJwb3N0RGF0YSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJIVFRQIFBPU1QgcmVxdWVzdCBkYXRhLCBiYXNlNjQtZW5jb2RlZC4iIH0KICAgICAg
ICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMjY2LDEzICsyODQsMzQgQEAKICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm92aWRlIHJlc3BvbnNlIGNvbnRlbnQgZm9yIGFu
IGludGVyY2VwdGVkIHJlc3BvbnNlLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIs
ICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayBy
ZXNwb25zZSB0byBtb2RpZnkuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVu
dCIsICJ0eXBlIjogInN0cmluZyIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2
NEVuY29kZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNv
bnRlbnQgd2FzIHNlbnQgYXMgYmFzZTY0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImNvbnRlbnQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJiYXNlNjRFbmNvZGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUcnVlLCBpZiBjb250ZW50IHdhcyBzZW50
IGFzIGJhc2U2NC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtaW1lVHlwZSIsICJ0
eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJNSU1FIFR5
cGUgZm9yIHRoZSBkYXRhLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1cyIs
ICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRU
UCByZXNwb25zZSBzdGF0dXMgY29kZS4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1
bm1vZGlmaWVkLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1c1RleHQiLCAi
dHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCBy
ZXNwb25zZSBzdGF0dXMgdGV4dC4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1v
ZGlmaWVkLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6
ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9u
c2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIg
fQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFt
ZSI6ICJpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIiwKKyAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJQcm92aWRlIHJlc3BvbnNlIGNvbnRlbnQgZm9yIGFuIGludGVyY2VwdGVkIHJlc3Bv
bnNlLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJ
ZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXNwb25zZSB0byBtb2RpZnku
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBlIjogInN0cmlu
ZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2NEVuY29kZWQiLCAidHlwZSI6
ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNvbnRlbnQgd2FzIHNlbnQgYXMg
YmFzZTY0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1pbWVUeXBlIiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk1JTUUgVHlwZSBmb3IgdGhlIGRhdGEuIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzIiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlLiBQYXNzIHRocm91Z2ggb3Jp
Z2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic3RhdHVzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJl
c3BvbnNlIHN0YXR1cyB0ZXh0LiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9k
aWZpZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjog
IkhlYWRlcnMiLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRo
cm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CisgICAgICAgICAgICBdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdFJlcXVl
c3RXaXRoRXJyb3IiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZhaWwgcmVxdWVzdCBv
ciByZXNwb25zZSB3aXRoIGdpdmVuIGVycm9yIHR5cGUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAi
UmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRl
ZCBOZXR3b3JrIHJlcXVlc3QgdG8gZmFpbC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJlcnJvclR5cGUiLCAiJHJlZiI6ICJSZXNvdXJjZUVycm9yVHlwZSIsICJkZXNjcmlwdGlvbiI6
ICJEZWxpdmVyIGVycm9yIHJlYXNvbiBmb3IgdGhlIHJlcXVlc3QgZmFpbHVyZS4iIH0KKyAgICAg
ICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImV2ZW50cyI6IFsKQEAgLTM0OCw5ICsz
ODcsMTcgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc291cmNlIiwgIiRyZWYiOiAi
Q2FjaGVkUmVzb3VyY2UiLCAiZGVzY3JpcHRpb24iOiAiQ2FjaGVkIHJlc291cmNlIGRhdGEuIiB9
CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1l
IjogInJlcXVlc3RJbnRlcmNlcHRlZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmly
ZWQgd2hlbiBIVFRQIHJlcXVlc3QgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBt
dXN0IHJlc3BvbmQgd2l0aCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdENvbnRpbnVlPC9jb2RlPiwg
PGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdDwvY29kZT5gIG9yIDxjb2RlPk5ldHdv
cmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2RlPmAgdG8gcmVzb2x2ZSB0aGlzIHJlcXVlc3Qu
IiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50
aWZpZXIgZm9yIHRoaXMgaW50ZXJjZXB0ZWQgbmV0d29yay4gQ29ycmVzcG9uZHMgd2l0aCBhbiBl
YXJsaWVyIDxjb2RlPk5ldHdvcmsucmVxdWVzdFdpbGxCZVNlbnQ8L2NvZGU+LiIgfSwKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3QiLCAiJHJlZiI6ICJSZXF1ZXN0IiwgImRlc2Ny
aXB0aW9uIjogIk9yaWdpbmFsIHJlcXVlc3QgY29udGVudCB0aGF0IHdvdWxkIHByb2NlZWQgaWYg
dGhpcyBpcyBjb250aW51ZWQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAg
IHsKICAgICAgICAgICAgICJuYW1lIjogInJlc3BvbnNlSW50ZXJjZXB0ZWQiLAotICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXNwb25zZSBoYXMgYmVlbiBpbnRl
cmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3QgcmVzcG9uc2Ugd2l0aCA8Y29kZT5OZXR3b3JrLmlu
dGVyY2VwdENvbnRpbnVlPC9jb2RlPiBvciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNw
b25zPC9jb2RlPmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXNwb25zZSBoYXMgYmVlbiBpbnRlcmNlcHRl
ZC4gVGhlIGZyb250ZW5kIG11c3QgcmVzcG9uc2Ugd2l0aCA8Y29kZT5OZXR3b3JrLmludGVyY2Vw
dENvbnRpbnVlPC9jb2RlPiBvciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZTwv
Y29kZT5gIHRvIGNvbnRpbnVlIHRoaXMgcmVzcG9uc2UuIiwKICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAi
UmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoaXMgaW50ZXJjZXB0
ZWQgbmV0d29yay4gQ29ycmVzcG9uZHMgd2l0aCBhbiBlYXJsaWVyIDxjb2RlPk5ldHdvcmsucmVx
dWVzdFdpbGxCZVNlbnQ8L2NvZGU+LiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJl
c3BvbnNlIiwgIiRyZWYiOiAiUmVzcG9uc2UiLCAiZGVzY3JpcHRpb24iOiAiT3JpZ2luYWwgcmVz
cG9uc2UgY29udGVudCB0aGF0IHdvdWxkIHByb2NlZWQgaWYgdGhpcyBpcyBjb250aW51ZWQuIiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCmluZGV4IDBjNDQyZWU5MDg4NzdkMjA2N2Q2NWU4NzQ0MTY1MmE4Y2YwMGM4OGUu
LmQxMGIzMjU1MTNlMmFjYTA2YjdhMzdhODU3MDg2YWExMmJhZGM2OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBA
IC04MTAsMTAgKzgxMCwxNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERl
c3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhYwogICAgIH0KIH0KIAot
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVy
Y2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQotICAgICAgICBy
ZXR1cm4gbmV0d29ya0FnZW50LT53aWxsSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKKyAgICAg
ICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdChyZXF1ZXN0KTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKGF1dG8qIG5ldHdv
cmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisg
ICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPnNob3VsZEludGVyY2VwdFJlcXVlc3QocmVxdWVz
dCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC04MjQsNiArODMxLDEyIEBAIGJvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmIGhhbmRsZXIpCit7CisgICAgaWYg
KGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29y
a0FnZW50KCkpCisgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIs
IFdURk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3
b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCmluZGV4IDAzYmRkNTVjYzkzMGRlMGNmYzYxZjhkOWU0MjEwZjQ5NTJhYTQ2MzMuLjJhNDVh
NWM4OWIzZjBkMDk1ODExNjJhN2Q4NGMwODQ3NTYzNjkyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTQ1LDYgKzQ1
LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uUHVibGljLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlc291
cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJXZWJBbmlt
YXRpb24uaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgpAQCAtMjMyLDggKzIz
MywxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFu
Z2UoUGFnZSYsIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBib29s
IHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CisgICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBGcmFtZSosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJik7CiAgICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwog
CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTQzNyw4ICs0NDAsMTAgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpOwogICAgIHN0YXRpYyB2
b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJik7CiAKLSAg
ICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNl
cHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlcXVlc3QqKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZv
aWQgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC0xMjQ5LDExICsxMjU0LDE5
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYKICAgICB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
SW1wbChjYWNoZWRSZXNvdXJjZSk7CiB9CiAKLWlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxJbnRlcmNlcHQoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNl
KTsKICAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0UmVxdWVzdElt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOworICAgICAgICByZXR1cm4gd2lsbElu
dGVyY2VwdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQoreworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWM6
Omhhc0Zyb250ZW5kcygpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiBzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMjY1LDYgKzEyNzgsMTMgQEAgaW5saW5lIGJvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSYgZnJhbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmIGhhbmRsZXIp
Cit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0
UmVxdWVzdChsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOworICAgIGlmIChhdXRv
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGxvYWRl
ci5mcmFtZSgpKSkKKyAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdB
Z2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1l
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXggOTU0YWFmMTIxYTlmYTUwN2Q4M2JjMTBhZTM3ZGUx
ZjEyOGY3ZGNmYy4uNDA2NjhhMWNiNjlmYjc3NDE2ZjgyNzZkOWRkZDAxOTg4ZTVkMGIxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMwLDExICszMCwyMSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChmcmFtZSwgcmVxdWVzdCk7Cit9CisKIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UoZnJhbWUsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmIGhhbmRs
ZXIpCit7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KGxv
YWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1v
dmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGI2N2U4OWI4MGI0ZTdhODU4NmNh
YzgxYWRlNWQ1OGExYmNiMGQ0MzEuLjU0M2Y1YjAzMzVjMWVkNmRkM2M3NjViYjMxZjgxMTNjMzQ3
MDY3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDE0ICszNiwyNyBAQCBjbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdCB7CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVz
dChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmKTsKICAg
ICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7
CiAKIHByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVy
bmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJu
YWwoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKK2lubGluZSBib29sIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSog
ZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoKmZy
YW1lLCByZXF1ZXN0KTsKK30KKwogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyhmYWxzZSk7CkBAIC01Myw2ICs2NiwxMiBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1l
KgogICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKCpmcmFtZSwgcmVz
cG9uc2UpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVyKQoreworICAgIEFTU0VS
VChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3Qo
bG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1l
LCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGFmY2RkMmE3ZmFmZmUwYmVjOTgy
MDcyZDg5NGJjODVjNmUzMGM0NGMuLmZiN2YyNzExZDA3M2JjYzljMDkxNTExNDlkY2Y1ZDkyOTAz
ODg3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1h
cC5oIgpAQCAtODQxLDEyICs4NDIsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
c2FibGUoRXJyb3JTdHJpbmcmKQogICAgIG1fcmVzb3VyY2VzRGF0YS0+Y2xlYXIoKTsKICAgICBt
X2V4dHJhUmVxdWVzdEhlYWRlcnMuY2xlYXIoKTsKIAorICAgIGNvbnRpbnVlUGVuZGluZ1JlcXVl
c3RzKCk7CiAgICAgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAKICAgICBzZXRSZXNvdXJj
ZUNhY2hpbmdEaXNhYmxlZChmYWxzZSk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpz
aG91bGRJbnRlcmNlcHQoVVJMIHVybCwgTmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSkKIHsKICAg
ICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTg1NSw2ICs4NTcsMTAgQEAg
Ym9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8mIGludGVyY2VwdCA6IG1faW50ZXJj
ZXB0cykgeworICAgICAgICBpZiAoaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSAhPSBuZXR3b3JrU3Rh
Z2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGludGVyY2VwdC51cmwuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGF1dG8gc2VhcmNoU3Ry
aW5nVHlwZSA9IGludGVyY2VwdC5pc1JlZ2V4ID8gQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2Vh
cmNoU3RyaW5nVHlwZTo6UmVnZXggOiBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJp
bmdUeXBlOjpFeGFjdFN0cmluZzsKICAgICAgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hV
dGlsaXRpZXM6OmNyZWF0ZVJlZ3VsYXJFeHByZXNzaW9uRm9yU2VhcmNoU3RyaW5nKGludGVyY2Vw
dC51cmwsIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlLCBzZWFyY2hTdHJpbmdUeXBlKTsKICAgICAg
ICAgaWYgKHJlZ2V4Lm1hdGNoKHVybFN0cmluZykgIT0gLTEpCkBAIC04NjQsNiArODcwLDE2IEBA
IGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51
ZVBlbmRpbmdSZXF1ZXN0cygpCit7CisgICAgZm9yIChhdXRvJiBwZW5kaW5nUmVxdWVzdCA6IG1f
cGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnZhbHVlcygpKSB7CisgICAgICAgIFJlc291cmNlTG9h
ZGVyKiBsb2FkZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgICAgIGlm
IChsb2FkZXItPmlkZW50aWZpZXIoKSkKKyAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5tX2Nv
bXBsZXRpb25IYW5kbGVyKCZsb2FkZXItPnJlcXVlc3QoKSk7CisgICAgfQorICAgIG1fcGVuZGlu
Z0ludGVyY2VwdFJlcXVlc3RzLmNsZWFyKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50Ojpjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKQogewogICAgIGZvciAoYXV0byYgcGVuZGlu
Z0ludGVyY2VwdFJlc3BvbnNlIDogbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnZhbHVlcygp
KQpAQCAtMTAyOSw2MiArMTA0NSw2NCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2V0
SW50ZXJjZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvbwogCiAgICAg
bV9pbnRlcmNlcHRpb25FbmFibGVkID0gZW5hYmxlZDsKIAotICAgIGlmICghbV9pbnRlcmNlcHRp
b25FbmFibGVkKQorICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKSB7CisgICAgICAgIGNv
bnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgICAgIGNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNl
cygpOworICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2Vw
dGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBi
b29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwg
Y29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBv
cHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKIHsKLSAg
ICBpZiAobmV0d29ya1N0YWdlU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm5ldHdv
cmtTdGFnZVN0cmluZyk7Ci0gICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7Ci0gICAgICAgICAg
ICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpu
ZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
fQotCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKICAgICBpbnRlcmNlcHQudXJsID0gdXJsOwog
ICAgIGlmIChvcHRpb25hbENhc2VTZW5zaXRpdmUpCiAgICAgICAgIGludGVyY2VwdC5jYXNlU2Vu
c2l0aXZlID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0aW9uYWxJc1JlZ2V4
KQogICAgICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElzUmVnZXg7Ci0KLSAgICAv
LyBGSVhNRTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisgICAgYXV0byBuZXR3b3Jr
U3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdl
PihuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAg
IGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0
d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnRlcmNlcHQu
bmV0d29ya1N0YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJj
ZXB0cy5hcHBlbmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVhZHkgZXhp
c3RzIl9zOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0
aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBj
b25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpyZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wq
IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewot
ICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3b3JrU3RhZ2Ug
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZy
b21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPigqbmV0
d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKLSAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywg
Km5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci0KICAgICBJbnRlcmNlcHQgaW50ZXJjZXB0OwogICAgIGludGVyY2VwdC51cmwgPSB1cmw7
CiAgICAgaWYgKG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSkKICAgICAgICAgaW50ZXJjZXB0LmNhc2VT
ZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVn
ZXgpCiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAg
IC8vIEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBhdXRvIG5ldHdv
cmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3Rh
Z2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCBu
ZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludGVyY2Vw
dC5uZXR3b3JrU3RhZ2UgPSBuZXR3b3JrU3RhZ2UudmFsdWUoKTsKIAogICAgIGlmICghbV9pbnRl
cmNlcHRzLnJlbW92ZUFsbChpbnRlcmNlcHQpKQogICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNz
aW5nIGludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4Il9zOwogfQogCi1i
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJ
bnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghbV9p
bnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
c2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCkpOworICAgIHJldHVybiBzaG91bGRJbnRlcmNl
cHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KSB8fCBzaG91bGRJbnRlcmNl
cHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK2Jvb2wgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXF1ZXN0
LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpOwogfQogCiBib29sIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCkBAIC0xMDkyLDcgKzExMTAsMjEgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AK
ICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSk7CisgICAgcmV0dXJu
IHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25zZSk7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9lbmFibGVkKTsKKyAgICBBU1NF
UlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKKworICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVu
dGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChsb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICBpZiAo
bV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY29udGFpbnMocmVxdWVzdElkKSkgeworICAgICAg
ICBoYW5kbGVyKCZsb2FkZXIucmVxdWVzdCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5zZXQocmVxdWVzdElkLCBtYWtlVW5pcXVlPFBl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0PigmbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKSk7CisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
JiBoYW5kbGVyKQpAQCAtMTExMiwxOCArMTE0NCw3MiBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlSW50ZXJjZXB0ZWQocmVxdWVzdElk
LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIG51bGxwdHIpKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJp
bmcpCiB7CisgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNw
ZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgIGlmICgh
bmV0d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93
biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChuZXR3b3JrU3RhZ2UudmFsdWUoKSA9PSBOZXR3b3JrU3RhZ2U6
OlJlcXVlc3QpIHsKKyAgICAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCA9IG1fcGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAgICAgICAgaWYgKHBlbmRp
bmdJbnRlcmNlcHRSZXF1ZXN0KSB7CisgICAgICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVxdWVz
dC0+bV9jb21wbGV0aW9uSGFuZGxlcigmcGVuZGluZ0ludGVyY2VwdFJlcXVlc3QtPm1fbG9hZGVy
LT5yZXF1ZXN0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4g
cmVxdWVzdElkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBwZW5kaW5n
SW50ZXJjZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1
ZXN0SWQpOwotICAgIGlmICghcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7Ci0gICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVu
IHJlcXVlc3RJZCJfczsKKyAgICBpZiAocGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7CisgICAg
ICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNl
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBw
ZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworfQorCit2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlcXVlc3QoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nKiBt
ZXRob2QsIGNvbnN0IFN0cmluZyogdXJsLCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMsIGNv
bnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAgICBpZiAocGVuZGluZ1Jl
cXVlc3QpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0
LT5tX2xvYWRlci5nZXQoKTsKKyAgICAgICAgaWYgKCFsb2FkZXItPmlkZW50aWZpZXIoKSkgewor
ICAgICAgICAgICAgLy8gRG8gbm90IHRocm93IHVwb24gY29udGludWUgb2YgY2FuY2VsZWQgcmVx
dWVzdHMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gU2FmZSB0
byBjb25zdCBjYXN0IGF0IHRoaXMgcG9pbnQsIHdlIGFyZSBvbmx5IGFkanVzdGluZyB0aGUgbWV0
aG9kIC8gaGVhZGVycyAvIHBvc3QuCisgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0g
bG9hZGVyLT5yZXF1ZXN0KCk7CisgICAgICAgIGlmICh1cmwpCisgICAgICAgICAgICByZXF1ZXN0
LnNldFVSTChVUkwoeyB9LCAqdXJsKSk7CisgICAgICAgIGlmIChtZXRob2QpCisgICAgICAgICAg
ICByZXF1ZXN0LnNldEhUVFBNZXRob2QoKm1ldGhvZCk7CisgICAgICAgIGlmIChoZWFkZXJzKSB7
CisgICAgICAgICAgICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0SGVhZGVyczsKKyAgICAgICAgICAg
IGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDogKmhlYWRlcnMpIHsKKyAgICAgICAgICAgICAgICBT
dHJpbmcgaGVhZGVyVmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5hc1N0cmluZyho
ZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0SGVhZGVycy5hZGQoa2V5
LCBoZWFkZXJWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAocG9zdERhdGEpIHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7
CisgICAgICAgICAgICBpZiAoIWJhc2U2NERlY29kZSgqcG9zdERhdGEsIGJ1ZmZlcikpIHsKKyAg
ICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZGVjb2RlIGdpdmVuIHBvc3RE
YXRhIl9zOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0ZShidWZmZXIpKTsKKyAgICAg
ICAgfQorICAgICAgICBwZW5kaW5nUmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxlcigmcmVxdWVz
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9u
c2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwog
fQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcqIG1pbWVUeXBl
LCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0LCBjb25zdCBKU09O
OjpPYmplY3QqIGhlYWRlcnMpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIGNvbnN0IFN0cmluZyogY29udGVudCwgY29uc3QgYm9vbCogYmFzZTY0RW5jb2RlZCwg
Y29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyog
c3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQogewogICAgIGF1dG8gcGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRha2Uo
cmVxdWVzdElkKTsKICAgICBpZiAoIXBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSkgewpAQCAtMTE1
MiwyMCArMTIzOCwxMDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdp
dGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICB9CiAKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7Ci0gICAgaWYgKGJhc2U2NEVuY29kZWQp
IHsKKyAgICBpZiAoYmFzZTY0RW5jb2RlZCAmJiAqYmFzZTY0RW5jb2RlZCAmJiBjb250ZW50KSB7
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgICAgIGlmICghYmFzZTY0RGVj
b2RlKGNvbnRlbnQsIGJ1ZmZlcikpIHsKKyAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKmNvbnRl
bnQsIGJ1ZmZlcikpIHsKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNv
ZGUgZ2l2ZW4gY29udGVudCJfczsKICAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5n
dGgoKSk7CisgICAgfSBlbHNlIGlmIChjb250ZW50KQorICAgICAgICBvdmVycmlkZURhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LT51dGY4KCkuZGF0YSgpLCBjb250ZW50LT51dGY4
KCkubGVuZ3RoKCkpOwogCiAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kKG92
ZXJyaWRlUmVzcG9uc2UsIG92ZXJyaWRlRGF0YSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9v
bCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBjb25z
dCBTdHJpbmcmIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykKK3sKKyAg
ICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShy
ZXF1ZXN0SWQpOworICAgIGlmICghcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVz
dElkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFJlc291cmNlTG9h
ZGVyPiBsb2FkZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgaWYgKCFs
b2FkZXItPmlkZW50aWZpZXIoKSkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8g
ZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIGlm
IChiYXNlNjRFbmNvZGVkKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAg
ICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRlbnQsIGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gY29udGVudCJfczsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRlbnQudXRmOCgpLmRhdGEoKSwgY29udGVudC51dGY4KCkubGVuZ3Ro
KCkpOworCisgICAgLy8gTWltaWMgZGF0YSBVUkwgbG9hZCBiZWhhdmlvciAtIHJlcG9ydCBkaWRS
ZWNlaXZlUmVzcG9uc2UgJiBkaWRGaW5pc2hMb2FkaW5nLgorICAgIFJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UocGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLT51cmwoKSwgbWltZVR5cGUsIGRhdGEt
PnNpemUoKSwgU3RyaW5nKCkpOworICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3Bv
bnNlOjpTb3VyY2U6Okluc3BlY3Rvck92ZXJyaWRlKTsKKyAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzQ29kZShzdGF0dXMpOworICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KHN0YXR1c1Rl
eHQpOworICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOworICAgIGZvciAoYXV0byYg
aGVhZGVyIDogaGVhZGVycykgeworICAgICAgICBTdHJpbmcgaGVhZGVyVmFsdWU7CisgICAgICAg
IGlmIChoZWFkZXIudmFsdWUtPmFzU3RyaW5nKGhlYWRlclZhbHVlKSkKKyAgICAgICAgICAgIGV4
cGxpY2l0SGVhZGVycy5hZGQoaGVhZGVyLmtleSwgaGVhZGVyVmFsdWUpOworICAgIH0KKyAgICBy
ZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7Cisg
ICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlw
ZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
cmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgbG9hZGVyLT5k
aWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCksIERhdGFQYXls
b2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3
b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgfSk7CisgICAgcGVuZGluZ1JlcXVlc3QtPm1fY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpp
bnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlU3RyaW5nKQoreworICAg
IGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJl
cXVlc3RJZCk7CisgICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBlcnJvclN0cmlu
ZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZvciBnaXZlbiByZXF1ZXN0
SWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXNvdXJjZUxvYWRlciogbG9h
ZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgIGlmICghbG9hZGVyLT5p
ZGVudGlmaWVyKCkpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGFib3J0IHJl
cXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNw
ZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU+KGVycm9yVHlwZVN0cmluZyk7CisgICAgaWYg
KCFlcnJvclR5cGUpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5rbm93biBlcnJvciB0eXBl
Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsK
KyAgICBzd2l0Y2ggKGVycm9yVHlwZS52YWx1ZSgpKSB7CisgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6R2VuZXJhbDoKKyAgICAgICAgZXJy
b3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+
dXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5l
cmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNzQ29udHJvbDoKKyAgICAgICAgZXJyb3IgPSBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCks
ICJBY2Nlc3MgZGVuaWVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpS
ZXNvdXJjZUVycm9yVHlwZTo6Q2FuY2VsbGF0aW9uOgorICAgICAgICBlcnJvciA9IFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwoKSwgIlJlcXVl
c3QgY2FuY2VsZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3Vy
Y2VFcnJvclR5cGU6OlRpbWVvdXQ6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAiUmVxdWVzdCB0aW1lZCBv
dXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBsb2FkZXItPmRpZEZhaWwoZXJyb3IpOworICAgIHBlbmRpbmdSZXF1ZXN0
LT5tX2NvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworfQorCiBib29sIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAg
ICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRl
eHQvIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGJmZDEzMWU5YjU4NTZjODRkYTc3MjQ4MDVlNzEzOTdi
N2M3NDg2YTkuLjY5NTdkNjcyYTI2MjU2OWM0YzE2ZjBmYTljYzQyMmJjNjM0ZmUzMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuaApAQCAtODgsMTAgKzg4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlcmlh
bGl6ZWRDZXJ0aWZpY2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBT
dHJpbmcqIHNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZSkgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlV2Vi
U29ja2V0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
Zyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JikgZmluYWw7CiAgICAgdm9pZCBzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9y
U3RyaW5nJiwgYm9vbCBlbmFibGVkKSBmaW5hbDsKLSAgICB2b2lkIGFkZEludGVyY2VwdGlvbihF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykg
ZmluYWw7Ci0gICAgdm9pZCByZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdl
eCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgaW50
ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkgZmlu
YWw7Ci0gICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29k
ZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJp
bmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycykgZmluYWw7CisgICAg
dm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIGlzUmVnZXgpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlSW50ZXJjZXB0aW9u
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0
YWdlU3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4
KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5h
bDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBTdHJpbmcqIHVybCwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcqIHBvc3REYXRhKSBmaW5h
bDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIGNvbnRlbnQsIGNvbnN0IGJvb2wqIGJhc2U2
NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25z
dCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycykgZmluYWw7
CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRF
bmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcm
IHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykgZmluYWw7CisgICAgdm9p
ZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKSBmaW5hbDsKIAogICAgIC8vIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAg
LTExOCw5ICsxMjEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgbWFpbkZyYW1lTmF2aWdhdGVkKERv
Y3VtZW50TG9hZGVyJik7CiAgICAgdm9pZCBzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lk
IGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50Jik7Ci0gICAgYm9vbCB3aWxs
SW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHdpbGxJ
bnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgYm9vbCBzaG91bGRJbnRlcmNl
cHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgaW50ZXJjZXB0
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VM
b2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYm
KTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKICAgICB2b2lkIHNlYXJjaEluUmVxdWVzdChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29s
IGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jik7CkBAIC0xNDAsNyAr
MTQ1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJl
c291cmNlVHlwZSk7CiAKLSAgICBib29sIHNob3VsZEludGVyY2VwdChVUkwpOworICAgIHVzaW5n
IE5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFn
ZTsKKyAgICBib29sIHNob3VsZEludGVyY2VwdChVUkwsIE5ldHdvcmtTdGFnZSk7CisgICAgdm9p
ZCBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIHZvaWQgY29udGludWVQZW5kaW5nUmVz
cG9uc2VzKCk7CiAKICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCk7CkBAIC0xNTMsNiArMTYwLDIwIEBAIHByaXZhdGU6CiAKICAgICBk
b3VibGUgdGltZXN0YW1wKCk7CiAKKyAgICBjbGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCB7
CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KTsK
KyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBQ
ZW5kaW5nSW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgICAgICAgICAgOiBtX2xvYWRlcihsb2FkZXIpCisgICAgICAgICAgICAsIG1fY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIHsgfQorCisg
ICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KCkgPSBkZWZhdWx0OworICAgICAgICBSZWZQ
dHI8UmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIH07
CisKICAgICBjbGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgewogICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTIwNCwxNSArMjI1LDE4IEBAIHByaXZhdGU6CiAgICAgICAg
IFN0cmluZyB1cmw7CiAgICAgICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSB7IHRydWUgfTsKICAgICAg
ICAgYm9vbCBpc1JlZ2V4IHsgZmFsc2UgfTsKKyAgICAgICAgTmV0d29ya1N0YWdlIG5ldHdvcmtT
dGFnZSB7IE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UgfTsKIAogICAgICAgICBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEludGVyY2VwdCYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiB1cmwgPT0gb3RoZXIudXJsCiAgICAgICAgICAgICAgICAgJiYgY2FzZVNl
bnNpdGl2ZSA9PSBvdGhlci5jYXNlU2Vuc2l0aXZlCi0gICAgICAgICAgICAgICAgJiYgaXNSZWdl
eCA9PSBvdGhlci5pc1JlZ2V4OworICAgICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIu
aXNSZWdleAorICAgICAgICAgICAgICAgICYmIG5ldHdvcmtTdGFnZSA9PSBvdGhlci5uZXR3b3Jr
U3RhZ2U7CiAgICAgICAgIH0KICAgICB9OwogICAgIFZlY3RvcjxJbnRlcmNlcHQ+IG1faW50ZXJj
ZXB0czsKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNl
cHRSZXF1ZXN0Pj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHM7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2U+PiBtX3BlbmRpbmdJ
bnRlcmNlcHRSZXNwb25zZXM7CiAKICAgICAvLyBGSVhNRTogSW5zcGVjdG9yTmV0d29ya0FnZW50
IHNob3VsZCBub3QgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDIzMWVkZWM4Y2NjNzFkNjUyMTcxMDYzNjNmNWNjMzQ5OTBhMTY0N2UuLjY1OWUyZmU4OTA3YjMx
NTk3NjYwYTdkZGM0OGI5NDVkMzNmMGY1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtODQ2LDcgKzg0Niw3IEBA
IFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAKICAgICByZXF1ZXN0LnVwZGF0ZVJlZmVycmVyUG9s
aWN5KGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpIDogUmVmZXJyZXJQ
b2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsKIAotICAgIGlmIChJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKSkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVy
Y2VwdCgmZnJhbWUsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXF1ZXN0
LnNldENhY2hpbmdQb2xpY3koQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKTsKIAogICAg
IGF1dG8mIHBhZ2UgPSAqZnJhbWUucGFnZSgpOwpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgVmVjdG9y
PFJlZjxTVkdJbWFnZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjphbGxDYWNoZWRTVkdJbWFnZXMo
KSBjb25zdAogCiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlw
ZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIGlmIChJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lKCksIHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxJbnRlcmNlcHQoZnJhbWUoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJL
aXRJbnRlcm5hbCwgMCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgIkluc3BlY3Rv
ciBpbnRlcmNlcHQiX3MgfSk7CiAKICAgICBpZiAocmVxdWVzdC5jaGFyc2V0KCkuaXNFbXB0eSgp
ICYmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtN
YW5hZ2VyLmpzCmluZGV4IDFjODEyNjBkOGRiMjM0OGMwMGJmZWQ5NWI3YmM3MDIwMTUwMGM1ZGUu
LjAzMjY4NzNmMjM4ZmZmN2ZlYmMxMGE5Y2M4NjE1YTZiMzZhMzlkMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5h
Z2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC0xNjEsNyArMTYxLDcgQEAgV0kuTmV0d29ya01hbmFn
ZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUu
aXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxv
Y2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdl
LlJlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JC
YWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
QEAgLTM2NCw3ICszNjQsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNl
T3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAgICAgICAgICAgICAgaXNSZWdleDogbG9j
YWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICAgICAgbmV0d29ya1N0YWdl
OiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisg
ICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdv
cmtTdGFnZS5SZXNwb25zZSwKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIC8vIENPTVBB
VElCSUxJVFkgKGlPUyAxMy4wKTogTmV0d29yay5hZGRJbnRlcmNlcHRpb24gZGlkIG5vdCBleGlz
dC4KQEAgLTM5Nyw3ICszOTcsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291
cmNlT3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGxvY2FsUmVz
b3VyY2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAgICAgICAgICAgICAgaXNSZWdleDog
bG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICAgICAgbmV0d29ya1N0
YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2Us
CisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5l
dHdvcmtTdGFnZS5SZXNwb25zZSwKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyAxMy4wKTogTmV0d29yay5yZW1vdmVJbnRlcmNlcHRpb24gZGlkIG5v
dCBleGlzdC4KQEAgLTkxMSw3ICs5MTEsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5l
dHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGxldCB1cmwgPSBXSS51cmxX
aXRob3V0RnJhZ21lbnQocmVzcG9uc2UudXJsKTsKICAgICAgICAgbGV0IGxvY2FsUmVzb3VyY2VP
dmVycmlkZSA9IHRoaXMubG9jYWxSZXNvdXJjZU92ZXJyaWRlRm9yVVJMKHVybCk7CiAgICAgICAg
IGlmICghbG9jYWxSZXNvdXJjZU92ZXJyaWRlIHx8IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5kaXNh
YmxlZCkgewotICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRDb250aW51
ZShyZXF1ZXN0SWQpOworICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRD
b250aW51ZShyZXF1ZXN0SWQsIEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXNwb25zZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTM3
Nyw3ICsxMzc3LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUu
dXJsLAogICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlz
Q2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlk
ZS5pc1JlZ2V4LAotICAgICAgICAgICAgbmV0d29ya1N0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVu
dW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAgICBzdGFnZTogSW5z
cGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAg
ICB9OwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogTmV0d29yay5hZGRJ
bnRlcmNlcHRpb24gLyBOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlvbiBkaWQgbm90IGV4aXN0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
TmV0d29ya09ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCmluZGV4IDU5YzI5YzlhMzg0YjA0NzhkZDhkNmQw
Y2Y1OTI4YjYyOTgxODAwYWEuLmE2ZTZkZWZhZWVkZjEyOTE1ODhiZWI4NzEwMGUwMmY3NmNmMzMy
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL05ldHdvcmtPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKQEAgLTEwOCw4ICsxMDgsOCBAQCBX
SS5OZXR3b3JrT2JzZXJ2ZXIgPSBjbGFzcyBOZXR3b3JrT2JzZXJ2ZXIgZXh0ZW5kcyBJbnNwZWN0
b3JCYWNrZW5kLkRpc3BhdGNoZXIKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4K
ICAgICB9CiAKLSAgICByZXNwb25zZUludGVyY2VwdGVkKHJlcXVlc3RJZCwgcmVzcG9uc2UpCisg
ICAgcmVzcG9uc2VJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIHJlcXVlc3QpCiAgICAgewotICAgICAg
ICBXSS5uZXR3b3JrTWFuYWdlci5yZXNwb25zZUludGVyY2VwdGVkKHRoaXMuX3RhcmdldCwgcmVx
dWVzdElkLCByZXNwb25zZSk7CisgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlc3BvbnNlSW50
ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QpOwogICAgIH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKaW5kZXggYjhkY2NhZDJjMmNmOGQwMDAxNDAwNDA3Y2FjYTZlMjdiMWY4ODI0OS4u
NDJmM2I0Mjg5NDIzNDlmYmFiZTgxZDMxYTY1YmJmZjk3MTZiMDhmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApA
QCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVs
ZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktp
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgpAQCAtMjMwLDggKzIzMSwxNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVy
LCBDYWNoZWRSZXNvdQogCiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVy
KHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKSB7CiAgICAgICAgIFdFQkxPQURF
UlNUUkFURUdZX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwg
YmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIik7Ci0gICAgICAgIHNjaGVkdWxl
TG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7Ci0gICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHx8ICFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QocmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgcmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdCgpKSkgeworICAgICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdv
cmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNr
aW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
bWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJj
ZXB0UmVxdWVzdChyZXNvdXJjZUxvYWRlciwgW3RoaXMsIHByb3RlY3RlZFJlc291cmNlTG9hZGVy
ID0gbWFrZVJlZlB0cigmcmVzb3VyY2VMb2FkZXIpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHJlc291cmNlXShjb25zdCBSZXNv
dXJjZVJlcXVlc3QqIHJlcXVlc3QpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHJlcXVlc3Qp
CisgICAgICAgICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKCpwcm90ZWN0
ZWRSZXNvdXJjZUxvYWRlciwgKnJlcXVlc3QsIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVz
b3VyY2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAg
V0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBV
Ukwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTc4OGE0NWI3NzNkMDI3
MjZlNGJhZjRjZjBlODRjN2Q5NjdhNDAwYi4uOWJkYWEwNWQzZGViOGUxYmRkOGZmYjA5NmJkMGM0
MTlmOTEwODk1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAyLTI5ICBQYXZlbCBGZWxk
bWFuICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
aW50cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVx
dWVzdCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsKKyAgICAgICAgcHJvdG9jb2wgZG9tYWlu
LiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQK
KyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3Jr
U3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2Un
IHZhbHVlcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90
b2NvbC10ZXN0LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsv
bG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbDoKKwogMjAyMC0w
NS0xMiAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dW1dLMV0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGRvZXNuJ3Qgd29yayBzaW5j
ZSByMjQ0MTgyIGluIEFjY2VsZXJhdGVkIENvbXBvc2l0aW5nIG1vZGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0Lmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRl
c3QuanMKaW5kZXggYTAyNjQ5ZDU2YmRiM2QyODVjMWYwZDdmODAwY2ZlNDEwODkyMjY0MS4uODMx
YTYxZjY3ODVlNDQ4OGIxMmQ3ZGZkZWYxZmU2NmQzNzU1MTIyMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRl
c3QuanMKQEAgLTg3LDEyICs4NywxNCBAQCBUZXN0UGFnZS5ydW5UZXN0ID0gd2luZG93LnJ1blRl
c3QgPSBmdW5jdGlvbigpCiAgICAgaWYgKHR5cGVvZiB0ZXN0RnVuY3Rpb24gIT09ICJmdW5jdGlv
biIpIHsKICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBzZW5kIHRlc3QoKSBiZWNhdXNlIGl0IGlz
IG5vdCBhIGZ1bmN0aW9uLiIpOwogICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGxldCB1cmwgPSB0ZXN0UnVubmVyLmluc3BlY3Rv
clRlc3RTdHViVVJMOwogICAgIGlmICghdXJsKSB7CiAgICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8g
b2J0YWluIGluc3BlY3RvciB0ZXN0IHN0dWIgVVJMLiIpOwogICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1bklu
aXRpYWxpemF0aW9uTWV0aG9kc0luRnJvbnRlbmQoaW5pdGlhbGl6ZXJzKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzMTc0ZDA2YThlM2RhMzQ2MTUxYzYyNDQxYmMzMGY1YWI5
MGUzZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdCByZXF1
ZXN0IGludGVyY2VwdGlvbi4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsgcmVx
dWVzdCBpbnRlcmNlcHRpb24KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBzZXRVcAorLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IE5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJbnRlcmNl
cHRlZC5pbnRlcmNlcHRDb250aW51ZQorUmVzcG9uc2UgZGF0YTogJ3siYWxwaGEiOiJiZXRhIiwi
Z2FtbWEiOjEyMzQ1fScKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsgcmVxdWVzdCBp
bnRlcmNlcHRpb246IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRXaXRoUmVxdWVzdAordGV4
dDogaW50ZXJjZXB0ZWQgcmVxdWVzdAorCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3Jr
IHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZQordGV4dDogaW50ZXJjZXB0ZWQgZGF0YQorc3RhdHVzOiAyMDAKK3N0YXR1
c1RleHQ6IE9LCittaW1lVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCitteS1oZWFkZXI6
IG15LXZhbHVlCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJj
ZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvcgorUmVx
dWVzdCBlcnJvcjogJ1JlcXVlc3QgY2FuY2VsZWQnCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MTRm
MDgzYWQzOGYxYzY5ODE1YjU3YzU2ZTE4NjA0ZjQ2MDQxZTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCkBAIC0w
LDAgKzEsMTc3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworYXN5bmMgZnVu
Y3Rpb24gZmV0Y2hEYXRhKCkgeworICAgIHRyeSB7CisgICAgICAgIGxldCByZXNwb25zZSA9IGF3
YWl0IGZldGNoKCdyZXNvdXJjZXMvZGF0YS5qc29uJyk7CisgICAgICAgIHJldHVybiB7CisgICAg
ICAgICAgICB0ZXh0OiBhd2FpdCByZXNwb25zZS50ZXh0KCksCisgICAgICAgICAgICBzdGF0dXM6
IHJlc3BvbnNlLnN0YXR1cywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1
c1RleHQsCisgICAgICAgICAgICBtaW1lVHlwZTogcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRl
bnQtdHlwZScpLAorICAgICAgICAgICAgaGVhZGVyOiByZXNwb25zZS5oZWFkZXJzLmdldCgnbXkt
aGVhZGVyJyksCisgICAgICAgIH07CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm4g
ZS5tZXNzYWdlOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRl
ID0gUHJvdG9jb2xUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsgcmVxdWVzdCBpbnRlcmNl
cHRpb24iKTsKKworICAgIGZ1bmN0aW9uIHByaW50RmV0Y2hSZXN1bHQocmVzdWx0KQorICAgIHsK
KyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygidGV4dDogIiArIHJlc3VsdC50ZXh0KTsKKyAgICAg
ICAgUHJvdG9jb2xUZXN0LmxvZygic3RhdHVzOiAiICsgcmVzdWx0LnN0YXR1cyk7CisgICAgICAg
IFByb3RvY29sVGVzdC5sb2coInN0YXR1c1RleHQ6ICIgKyByZXN1bHQuc3RhdHVzVGV4dCk7Cisg
ICAgICAgIFByb3RvY29sVGVzdC5sb2coIm1pbWVUeXBlOiAiICsgcmVzdWx0Lm1pbWVUeXBlKTsK
KyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygibXktaGVhZGVyOiAiICsgcmVzdWx0LmhlYWRlcik7
CisgICAgfQorCisgICAgbGV0IHVybDsKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJzZXRVcCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQg
W3Jlc3VsdDEsIHJlc3VsdDIsIHtyZXN1bHR9XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRp
bWUuZW5hYmxlIiwgcGFyYW1zOiB7fX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3Rv
Y29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5lbmFibGUiLCBwYXJhbXM6IHt9fSks
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6
ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIGV4cHJl
c3Npb246ICJkb2N1bWVudC5VUkwiLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuc2V0
SW50ZXJjZXB0aW9uRW5hYmxlZCIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBlbmFi
bGVkOiB0cnVlLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgIF0pOworCisgICAg
ICAgICAgICBsZXQgYmFzZVVSTCA9IHJlc3VsdC52YWx1ZS5zdWJzdHJpbmcoMCwgcmVzdWx0LnZh
bHVlLmxhc3RJbmRleE9mKCIvIikpOworICAgICAgICAgICAgdXJsID0gYmFzZVVSTCArICIvcmVz
b3VyY2VzL2RhdGEuanNvbiI7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JQcm90b2NvbC5h
d2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIiwgcGFyYW1zOiB7
IHVybCwgc3RhZ2U6ICJyZXF1ZXN0IiB9fSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsgcmVxdWVzdCBpbnRlcmNl
cHRpb246IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRDb250aW51ZSIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiVGVzdCBjb250aW51ZSBpbnRlcmNlcHRlZCByZXF1ZXN0LiIsCisgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5kIGludGVyY2VwdCBp
dC4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50
XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2Nv
bC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAg
ICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIiwKKyAgICAgICAgICAg
ICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7
ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KSwKKyAgICAgICAgICAgIF0pOwor
CisgICAgICAgICAgICAvLyBMZXQgdGhlIGxvYWQgY29udGludWUuCisgICAgICAgICAgICBsZXQg
W2ZldGNoUmVzdWx0XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdhaXRQcm9taXNl
IiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VPYmplY3RJZDogZmV0Y2hS
ZXN1bHRQcm9taXNlLnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
QnlWYWx1ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdENv
bnRpbnVlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogaW50ZXJj
ZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBzdGFnZTog
InJlcXVlc3QiLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgIF0pOworICAgICAg
ICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUmVzcG9uc2UgZGF0YTogJyIgKyBmZXRjaFJlc3VsdC5y
ZXN1bHQudmFsdWUudGV4dC50cmltKCkgKyAiJyIpOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrIHJlcXVlc3QgaW50
ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0V2l0aFJlcXVlc3QiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZnVsZmlsbCBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGgg
cmVzcG9uc2UuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIC8vIEZldGNo
IFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAgICAgICAgbGV0IFtmZXRjaFJlc3VsdFByb21p
c2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFs
dWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hE
YXRhKCkiLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQ
cm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVxdWVzdEludGVyY2VwdGVkIn0p
LAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIC8vIEZ1bGZpbGwgdGhlIHJlcXVlc3Qg
d2l0aCBkYXRhLgorICAgICAgICAgICAgbGV0IFtmZXRjaFJlc3VsdF0gPSBhd2FpdCBQcm9taXNl
LmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHtt
ZXRob2Q6ICJSdW50aW1lLmF3YWl0UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQs
CisgICAgICAgICAgICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsCisgICAgICAgICAgICAg
ICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7
bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCIsIHBhcmFtczogeworICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1zLnJlcXVlc3RJ
ZCwKKyAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwucmVwbGFjZSgnZGF0YS5qc29uJywgJ2Rh
dGEyLmpzb24nKSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAgICAg
ICAgICAgIFByb3RvY29sVGVzdC5sb2coInRleHQ6ICIgKyBmZXRjaFJlc3VsdC5yZXN1bHQudmFs
dWUudGV4dCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIk5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJbnRl
cmNlcHRlZC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJUZXN0IGZ1bGZpbGwgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHJlc3BvbnNlLiIsCisg
ICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5kIGludGVy
Y2VwdCBpdC4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRl
ZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQ
cm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6
IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIiwKKyAgICAg
ICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRF
dmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KSwKKyAgICAgICAgICAg
IF0pOworCisgICAgICAgICAgICAvLyBGdWxmaWxsIHRoZSByZXF1ZXN0IHdpdGggZGF0YS4KKyAg
ICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGlt
ZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZU9i
amVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9iamVjdElkLAorICAgICAgICAgICAg
ICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAg
ICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAg
ICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVz
VGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAibXktaGVhZGVyIjog
Im15LXZhbHVlIiB9LAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZTogImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGJ0b2EoImludGVy
Y2VwdGVkIGRhdGEiKSwKKyAgICAgICAgICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogdHJ1ZSwK
KyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIHByaW50
RmV0Y2hSZXN1bHQoZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yayByZXF1
ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFJlcXVlc3RXaXRo
RXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgYWJvcnQgaW50ZXJjZXB0ZWQgcmVx
dWVzdCB3aXRoIGVycm9yLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAv
LyBGZXRjaCBVUkwgYW5kIGludGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1
bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRp
bWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjog
ImZldGNoRGF0YSgpIiwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNl
cHRlZCJ9KSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAvLyBBYm9ydCB0aGUgcmVx
dWVzdCBhcyBjYW5jZWxlZC4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQg
UHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29t
bWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9i
amVjdElkLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLAorICAgICAg
ICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENv
bW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIsIHBhcmFt
czogeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFy
YW1zLnJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlOiAiQ2FuY2VsbGF0
aW9uIiwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAg
IFByb3RvY29sVGVzdC5sb2coIlJlcXVlc3QgZXJyb3I6ICciICsgZmV0Y2hSZXN1bHQucmVzdWx0
LnZhbHVlICsgIiciKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24uPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVz
b3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0
bWwKaW5kZXggNDQ4MDY0MjAwNDQ3Njk3ZmIwN2Y0MTZlOTc4NjM5OGUwMDNkMjQ2MC4uZDY2ZTE0
MGViNzE3ODY0N2MzODg2MjliMGQxM2UxYWEwMWEwMzBjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVz
cG9uc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNv
dXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sCkBAIC00Niw3ICs0Niw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgLy8gTGV0IHRoZSBsb2FkIGNvbnRpbnVlLgogICAg
ICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWwogICAgICAgICAgICAgICAgIEluc3BlY3RvclBy
b3RvY29sLmF3YWl0RXZlbnQoe2V2ZW50OiAiTmV0d29yay5yZXNwb25zZVJlY2VpdmVkIn0pLAot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAi
TmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIsIHBhcmFtczoge3JlcXVlc3RJZDogbWVzc2FnZU9i
amVjdC5wYXJhbXMucmVxdWVzdElkfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3Rv
Y29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIsIHBh
cmFtczoge3JlcXVlc3RJZDogbWVzc2FnZU9iamVjdC5wYXJhbXMucmVxdWVzdElkLCBzdGFnZTog
InJlc3BvbnNlIn19KSwKICAgICAgICAgICAgIF0pOwogICAgICAgICAgICAgUHJvdG9jb2xUZXN0
LnBhc3MoIlJlc3BvbnNlIHJlY2VpdmVkLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YTIuanNvbiBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhMi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NmNhNDk0YzFk
ZjM5NmIzZDk4MjE3YzEzOGZiNzE1ODgxZjMyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YTIuanNvbgpAQCAtMCwwICsxIEBA
CitpbnRlcmNlcHRlZCByZXF1ZXN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400507</attachid>
            <date>2020-05-28 14:46:47 -0700</date>
            <delta_ts>2020-05-28 14:57:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200528144646.patch</filename>
            <type>text/plain</type>
            <size>90572</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTk5NDI3ZDM3MjJjZWNkZDk3YTYxMDkzNGJjODUzZGQ2MGNlNGM2Li41NWIxOTQwN2Y1YjI5MGY0
ZmM5Njc3N2Q0NmQzMzNiMGJhYzY3OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNS0xMiAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRml4IGV4aXN0aW5nIHVz
YWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlNDIGFuZCBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2YTNmNDc4MWFmNjI1ZGY1YTg4OWJiOWJhODkxYmIwZmMxN2E4NjFhLi5jNjVjNmY4M2Y0OTcw
MTViNzk3NTFhMzg1OGU1MzA2NTNiMzliMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAK
KzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAK
KyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJl
cXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZp
ZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAg
J3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVl
c3RJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3Zl
SW50ZXJjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3Bv
bnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0wNS0xMiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3N0ZXIg
c2V0IGFmdGVyIHBsYXliYWNrIGJlZ2lucyBzaG91bGQgYmUgaWdub3JlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggMzhjN2MzMDY0YmVlNzRjOGQyOTExMGRjYzA3NDA3Zjg2Yzk0YjljOS4u
MTIzYjI0ZTAxZTlhNTY4NTg2Yzc1NDY2ZmIyYzg1MTM4N2M1MDRkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDUtMTMgIFBhdmVsICA8cGF2ZWwuZmVs
ZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVl
c3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRp
b24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBi
ZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2Fu
IG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVycmlk
ZSk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxSZXNv
dXJjZU92ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXF1
ZXN0SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJl
c3BvbnNlSW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBl
Ll9oYW5kbGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5ldHdv
cmtPYnNlcnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKwogMjAyMC0wNS0xMSAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogTmV0d29yazogVGltaW5nOiBnYXBzIGFyb3VuZCB0aGUgIlJlc291cmNlIGRvZXMgbm90IGhh
dmUgdGltaW5nIGRhdGEiIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTVhMWZhOWFiNGI1ODk4ZjQxYzc5
Njk2Zjc3YjE0ZjYwMzA4NTliYi4uMGNkYjFiMjEzNTIxODk2ZTc3ZDU0MzdkM2FkOTFhNDA3OTg3
ZDFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1h
biAgPHBhdmVsLmZlbGRtYW5AZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGlu
dHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVl
c3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4u
IEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAor
ICAgICAgICBjYW4gYmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtT
dGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScg
dmFsdWVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6
CisKIDIwMjAtMDUtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIFJld29yayBkcmFnIGFuZCBkcm9wIGhhbmRsaW5nIGluIHByZXBh
cmF0aW9uIGZvciBHVEs0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL05ldHdvcmsuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCmluZGV4IDc3N2E1NDE2NmVkNjY2NDU2MWIzZjgyNDlh
NmFiYjRhYzU5ZDA0ODAuLmEwODA5OTY2ODBiNzRiZjI2Y2JmMzRjMTlhNDY2Mjc3YWU3Y2E2ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0
d29yay5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
TmV0d29yay5qc29uCkBAIC0xNTUsNyArMTU1LDEzIEBACiAgICAgICAgICAgICAiaWQiOiAiTmV0
d29ya1N0YWdlIiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRGlmZmVyZW50IHN0YWdlcyBvZiBhIG5ldHdvcmsgcmVxdWVzdC4iLAot
ICAgICAgICAgICAgImVudW0iOiBbInJlc3BvbnNlIl0KKyAgICAgICAgICAgICJlbnVtIjogWyJy
ZXF1ZXN0IiwgInJlc3BvbnNlIl0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
ImlkIjogIlJlc291cmNlRXJyb3JUeXBlIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlmZmVyZW50IHN0YWdlcyBvZiBhIG5ldHdv
cmsgcmVxdWVzdC4iLAorICAgICAgICAgICAgImVudW0iOiBbIkdlbmVyYWwiLCAiQWNjZXNzQ29u
dHJvbCIsICJDYW5jZWxsYXRpb24iLCAiVGltZW91dCJdCiAgICAgICAgIH0KICAgICBdLAogICAg
ICJjb21tYW5kcyI6IFsKQEAgLTIzOCwxMCArMjQ0LDEwIEBACiAgICAgICAgICAgICAibmFtZSI6
ICJhZGRJbnRlcmNlcHRpb24iLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFkZCBhbiBp
bnRlcmNlcHRpb24uIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVSTCBw
YXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcgaWYgbm90IHNwZWNpZmll
ZCBvciBlbXB0eSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYi
OiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGludGVyY2VwdC4iIH0s
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwgInR5cGUiOiAiYm9v
bGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBmYWxzZSwgaWdub3Jl
cyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVn
dWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwg
IiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBzdGFnZXMuIiB9Cisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFy
YW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAgICAgXQogICAgICAg
ICB9LAogICAgICAgICB7CkBAIC0yNDksMTYgKzI1NSwyOCBAQAogICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlJlbW92ZSBhbiBpbnRlcmNlcHRpb24uIiwKICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5n
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3Jr
U3RhZ2UiLCAiZGVzY3JpcHRpb24iOiAiU3RhZ2UgdG8gaW50ZXJjZXB0LiIgfSwKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImNhc2VTZW5zaXRpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBj
YXNpbmcgb2YgYHVybGAgcGFyYW1ldGVyLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJl
c3Npb24uIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJO
ZXR3b3JrU3RhZ2UiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHBy
ZXNlbnQgdGhpcyBhcHBsaWVzIHRvIGFsbCBuZXR3b3JrIHN0YWdlcy4iIH0KKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMg
YSByZWd1bGFyIGV4cHJlc3Npb24uIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAg
ICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdENvbnRpbnVlIiwKLSAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJDb250aW51ZSBhbiBpbnRlcmNlcHRpb24gd2l0aCBubyBtb2Rp
ZmljYXRpb25zLiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udGludWUgcmVxdWVz
dCBvciByZXNwb25zZSB3aXRob3V0IG1vZGlmaWNhdGlvbnMuIiwKICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYi
OiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNl
cHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9CisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVz
Y3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVz
dCBvciByZXNwb25zZSB0byBjb250aW51ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0
byBjb250aW51ZS4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlJlcGxhY2UgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRl
ZCBvbmUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjog
IklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9u
c2UgdG8gY29udGludWUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWV0aG9kIiwg
InR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCBy
ZXF1ZXN0IG1ldGhvZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlw
ZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVl
c3QgdXJsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6
ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9u
c2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIg
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRh
dGEsIGJhc2U2NC1lbmNvZGVkLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAg
ICB7CkBAIC0yNjYsMTMgKzI4NCwzNCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBy
b3ZpZGUgcmVzcG9uc2UgY29udGVudCBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVzcG9uc2UuIiwKICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVx
dWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIg
Zm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAotICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4i
LCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBlIjogInN0cmluZyIs
ICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2NEVu
Y29kZWQiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRydWUsIGlmIGNvbnRlbnQgd2FzIHNlbnQgYXMgYmFzZTY0LiIgfSwKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIm1pbWVUeXBlIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIk1JTUUgVHlwZSBmb3IgdGhlIGRhdGEuIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlLiBQYXNz
IHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0LiBQYXNzIHRo
cm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAogICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRocm91Z2ggb3Jp
Z2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgcmVzcG9uc2UgY29u
dGVudCBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVzcG9uc2UuIiwKKyAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAi
UmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRl
ZCBOZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJzdHJpbmci
LCAiZGVzY3JpcHRpb24iOiAiTUlNRSBUeXBlIGZvciB0aGUgZGF0YS4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzdGF0dXMiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9u
IjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1
ZXMgaWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNU
ZXh0IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3Rh
dHVzIHRleHQuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0s
CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIs
ICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBvcmln
aW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJv
ciIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmFpbCByZXF1ZXN0IG9yIHJlc3BvbnNl
IHdpdGggZ2l2ZW4gZXJyb3IgdHlwZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQi
LCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsg
cmVxdWVzdCB0byBmYWlsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yVHlw
ZSIsICIkcmVmIjogIlJlc291cmNlRXJyb3JUeXBlIiwgImRlc2NyaXB0aW9uIjogIkRlbGl2ZXIg
ZXJyb3IgcmVhc29uIGZvciB0aGUgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAgICAgICAgICAgXQog
ICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpAQCAtMzQ4LDkgKzM4NywxNyBAQAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNoZWRSZXNv
dXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAgICAgICAg
ICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVz
dEludGVyY2VwdGVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhU
VFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3QgcmVzcG9u
ZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+LCA8Y29kZT5OZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9jb2RlPmAgb3IgPGNvZGU+TmV0d29yay5pbnRlcmNl
cHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byByZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAorICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0
SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3Ig
dGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxpZXIgPGNv
ZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVmIjogIlJlcXVlc3QiLCAiZGVzY3JpcHRpb24iOiAi
T3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlzIGlzIGNv
bnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAg
ICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRlcmNlcHRlZCIsCi0gICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29u
dGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8L2NvZGU+
YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBUaGUgZnJv
bnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8
L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2RlPmAgdG8g
Y29udGludWUgdGhpcyByZXNwb25zZS4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQi
LCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3Jr
LiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxpZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJl
U2VudDwvY29kZT4uIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzcG9uc2UiLCAi
JHJlZiI6ICJSZXNwb25zZSIsICJkZXNjcmlwdGlvbiI6ICJPcmlnaW5hbCByZXNwb25zZSBjb250
ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlzIGlzIGNvbnRpbnVlZC4iIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggMGM0NDJlZTkwODg3N2QyMDY3ZDY1ZTg3NDQxNjUyYThjZjAwYzg4ZS4uZDEwYjMyNTUx
M2UyYWNhMDZiN2EzN2E4NTcwODZhYTEyYmFkYzY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTgxMCwxMCAr
ODEwLDE3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hl
ZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSYgY2FjCiAgICAgfQogfQogCi1ib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCi0gICAgICAgIHJldHVybiBuZXR3
b3JrQWdlbnQtPndpbGxJbnRlcmNlcHRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm4g
bmV0d29ya0FnZW50LT53aWxsSW50ZXJjZXB0KHJlcXVlc3QpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVl
c3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgcmV0
dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNCw2ICs4MzEsMTIgQEAgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0
d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkK
KyAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZSho
YW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXgg
MDNiZGQ1NWNjOTMwZGUwY2ZjNjFmOGQ5ZTQyMTBmNDk1MmFhNDYzMy4uMmE0NWE1Yzg5YjNmMGQw
OTU4MTE2MmE3ZDg0YzA4NDc1NjM2OTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDUsNiArNDUsNyBAQAogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25QdWJsaWMuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIldvcmtlckluc3BlY3RvclByb3h5LmgiCkBAIC0yMzIsOCArMjMzLDEwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZShQYWdlJiwg
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVy
Y2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBz
dGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMgdm9p
ZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtNDM3LDggKzQ0MCwxMCBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERl
c3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBi
b29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNw
b25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNz
YWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTEyNDksMTEgKzEyNTQsMTkgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
KENhY2hlZFJlc291cmNlJgogICAgIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKGNhY2hl
ZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEludGVyY2VwdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlm
IChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1l
KGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0SW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvblB1YmxpYzo6aGFzRnJvbnRl
bmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJl
cXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTEyNjUsNiArMTI3OCwxMyBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGxv
YWRlci5mcmFtZSgpLCBsb2FkZXIucmVxdWVzdCgpKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUobG9hZGVyLmZyYW1lKCkp
KQorICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgbG9h
ZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktp
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0LmNwcAppbmRleCA5NTRhYWYxMjFhOWZhNTA3ZDgzYmMxMGFlMzdkZTFmMTI4ZjdkY2Zj
Li40MDY2OGExY2I2OWZiNzc0MTZmODI3NmQ5ZGRkMDE5ODhlNWQwYjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0LmNwcApAQCAtMzAsMTEgKzMwLDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVl
c3RJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK3sKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0KTsKK30KKwogYm9vbCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1
cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFt
ZSwgcmVzcG9uc2UpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZN
b3ZlKGhhbmRsZXIpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OmludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVy
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmgKaW5kZXggYjY3ZTg5YjgwYjRlN2E4NTg2Y2FjODFhZGU1ZDU4
YTFiY2IwZDQzMS4uNTQzZjViMDMzNWMxZWQ2ZGQzYzc2NWJiMzFmODExM2MzNDcwNjc5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuaApAQCAtMzYsMTQgKzM2LDI3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0IHsK
IHB1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZy
YW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYpOwogICAgIHN0YXRpYyB2
b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJpdmF0
ZToKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3Qg
RnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJj
ZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+
JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJh
bWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPik+JiYpOwogfTsKIAoraW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyhmYWxzZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCgqZnJhbWUsIHJlcXVl
c3QpOworfQorCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNo
b3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZh
bHNlKTsKQEAgLTUzLDYgKzY2LDEyIEBAIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqCiAgICAgcmV0
dXJuIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoKmZyYW1lLCByZXNwb25zZSk7CiB9
CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0
UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCopPiYmIGhhbmRsZXIpCit7CisgICAgQVNTRVJUKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChsb2FkZXIuZnJh
bWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOworICAgIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggYWZjZGQyYTdmYWZmZTBiZWM5ODIwNzJkODk0YmM4
NWM2ZTMwYzQ0Yy4uMjgzMmIzMjc4MWE3YzM0ZjNmZThkN2ExMmE3YzkyM2ZhZDhiYzNkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaCIKKyNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCkBAIC04
NDEsMTIgKzg0MiwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlzYWJsZShFcnJv
clN0cmluZyYpCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5jbGVhcigpOwogICAgIG1fZXh0cmFSZXF1
ZXN0SGVhZGVycy5jbGVhcigpOwogCisgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAg
ICBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsKIAogICAgIHNldFJlc291cmNlQ2FjaGluZ0Rp
c2FibGVkKGZhbHNlKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZElu
dGVyY2VwdChVUkwgdXJsKQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVy
Y2VwdChVUkwgdXJsLCBOZXR3b3JrU3RhZ2UgbmV0d29ya1N0YWdlKQogewogICAgIHVybC5yZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAtODU1LDYgKzg1NywxMCBAQCBib29sIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgaW50ZXJjZXB0IDogbV9pbnRlcmNlcHRzKSB7Cisg
ICAgICAgIGlmIChpbnRlcmNlcHQubmV0d29ya1N0YWdlICE9IG5ldHdvcmtTdGFnZSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoaW50ZXJjZXB0LnVybC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYXV0byBzZWFyY2hTdHJpbmdUeXBlID0g
aW50ZXJjZXB0LmlzUmVnZXggPyBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdU
eXBlOjpSZWdleCA6IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OlNlYXJjaFN0cmluZ1R5cGU6OkV4
YWN0U3RyaW5nOwogICAgICAgICBhdXRvIHJlZ2V4ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6
Y3JlYXRlUmVndWxhckV4cHJlc3Npb25Gb3JTZWFyY2hTdHJpbmcoaW50ZXJjZXB0LnVybCwgaW50
ZXJjZXB0LmNhc2VTZW5zaXRpdmUsIHNlYXJjaFN0cmluZ1R5cGUpOwogICAgICAgICBpZiAocmVn
ZXgubWF0Y2godXJsU3RyaW5nKSAhPSAtMSkKQEAgLTg2NCw2ICs4NzAsMTYgQEAgYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jl
cXVlc3RzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHBlbmRpbmdSZXF1ZXN0IDogbV9wZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdHMudmFsdWVzKCkpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXIqIGxvYWRl
ciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICAgICAgaWYgKGxvYWRlci0+
aWRlbnRpZmllcigpKQorICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3QtPm1fY29tcGxldGlvbkhh
bmRsZXIoJmxvYWRlci0+cmVxdWVzdCgpKTsKKyAgICB9CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0
UmVxdWVzdHMuY2xlYXIoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRp
bnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7CiAgICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0
UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI5
LDYyICsxMDQ1LDY0IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRp
b25FbmFibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2Vw
dGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCi0gICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQp
CisgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5k
aW5nUmVxdWVzdHMoKTsKICAgICAgICAgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAg
fQogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJp
bmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJ
bnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2Fz
ZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChuZXR3
b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdlU3Ry
aW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9yU3Ry
aW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtTdGFn
ZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBJ
bnRlcmNlcHQgaW50ZXJjZXB0OwogICAgIGludGVyY2VwdC51cmwgPSB1cmw7CiAgICAgaWYgKG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSkKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUgPSAq
b3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgpCiAgICAgICAg
IGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8vIEZJWE1FOiBT
dXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtT
dGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VT
dHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludGVyY2VwdC5uZXR3b3JrU3Rh
Z2UgPSBuZXR3b3JrU3RhZ2UudmFsdWUoKTsKIAogICAgIGlmICghbV9pbnRlcmNlcHRzLmFwcGVu
ZElmTm90Q29udGFpbnMoaW50ZXJjZXB0KSkKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJj
ZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlzUmVnZXggYWxyZWFkeSBleGlzdHMiX3M7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9u
YWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmlu
ZyogbmV0d29ya1N0YWdlU3RyaW5nKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92
ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCogb3B0aW9uYWxD
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgpCiB7Ci0gICAgaWYgKG5l
dHdvcmtTdGFnZVN0cmluZykgewotICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VT
dHJpbmcpOwotICAgICAgICBpZiAoIW5ldHdvcmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JT
dHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0
YWdlU3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQogICAg
IEludGVyY2VwdCBpbnRlcmNlcHQ7CiAgICAgaW50ZXJjZXB0LnVybCA9IHVybDsKICAgICBpZiAo
b3B0aW9uYWxDYXNlU2Vuc2l0aXZlKQogICAgICAgICBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSA9
ICpvcHRpb25hbENhc2VTZW5zaXRpdmU7CiAgICAgaWYgKG9wdGlvbmFsSXNSZWdleCkKICAgICAg
ICAgaW50ZXJjZXB0LmlzUmVnZXggPSAqb3B0aW9uYWxJc1JlZ2V4OwotCi0gICAgLy8gRklYTUU6
IFN1cHBvcnQgaW50ZXJjZXB0aW5nIHJlcXVlc3RzLgorICAgIGF1dG8gbmV0d29ya1N0YWdlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4obmV0d29y
a1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtTdGFnZSkgeworICAgICAgICBlcnJvclN0
cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFn
ZVN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW50ZXJjZXB0Lm5ldHdvcmtT
dGFnZSA9IG5ldHdvcmtTdGFnZS52YWx1ZSgpOwogCiAgICAgaWYgKCFtX2ludGVyY2VwdHMucmVt
b3ZlQWxsKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaW50ZXJj
ZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlzUmVnZXgiX3M7CiB9CiAKLWJvb2wgSW5zcGVj
dG9yTmV0d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKCFtX2ludGVyY2VwdGlv
bkVuYWJsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRl
cmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KSB8fCBzaG91bGRJbnRl
cmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK2Jvb2wg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXF1
ZXN0LnVybCgpKTsKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCksIE5l
dHdvcmtTdGFnZTo6UmVxdWVzdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpz
aG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
QEAgLTEwOTIsNyArMTExMCwyMSBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIGlmICgh
bV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpKTsKKyAgICByZXR1cm4gc2hvdWxkSW50
ZXJjZXB0KHJlc3BvbnNlLnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4m
JiBoYW5kbGVyKQoreworICAgIEFTU0VSVChtX2VuYWJsZWQpOworICAgIEFTU0VSVChtX2ludGVy
Y2VwdGlvbkVuYWJsZWQpOworCisgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKGxvYWRlci5pZGVudGlmaWVyKCkpOworICAgIGlmIChtX3BlbmRpbmdJ
bnRlcmNlcHRSZXF1ZXN0cy5jb250YWlucyhyZXF1ZXN0SWQpKSB7CisgICAgICAgIGhhbmRsZXIo
JmxvYWRlci5yZXF1ZXN0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcGVuZGlu
Z0ludGVyY2VwdFJlcXVlc3RzLnNldChyZXF1ZXN0SWQsIG1ha2VVbmlxdWU8UGVuZGluZ0ludGVy
Y2VwdFJlcXVlc3Q+KCZsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpKTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3QoKSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
CkBAIC0xMTEyLDE4ICsxMTQ0LDcyIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2Jq
ZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSwgbnVsbHB0cikpOwogfQogCi12b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjppbnRlcmNlcHRDb250aW51ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZykKIHsKKyAg
ICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBl
cnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3Rh
Z2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtT
dGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKG5ldHdvcmtTdGFnZS52YWx1ZSgpID09IE5ldHdvcmtTdGFnZTo6UmVxdWVzdCkg
eworICAgICAgICBhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgICAgICBpZiAocGVuZGluZ0ludGVyY2Vw
dFJlcXVlc3QpIHsKKyAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0LT5tX2NvbXBs
ZXRpb25IYW5kbGVyKCZwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdC0+bV9sb2FkZXItPnJlcXVlc3Qo
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQi
X3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRvIHBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7Ci0g
ICAgaWYgKCFwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zOworICAgIGlmIChwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKKyAgICAgICAgcGVuZGlu
Z0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50
ZXJjZXB0IHJlc3BvbnNlIGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVxdWVzdChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG1ldGhvZCwgY29u
c3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5n
KiBwb3N0RGF0YSkKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlmIChwZW5kaW5nUmVxdWVzdCkgewor
ICAgICAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVy
LmdldCgpOworICAgICAgICBpZiAoIWxvYWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgICAg
ICAvLyBEbyBub3QgdGhyb3cgdXBvbiBjb250aW51ZSBvZiBjYW5jZWxlZCByZXF1ZXN0cy4KKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBTYWZlIHRvIGNvbnN0IGNh
c3QgYXQgdGhpcyBwb2ludCwgd2UgYXJlIG9ubHkgYWRqdXN0aW5nIHRoZSBtZXRob2QgLyBoZWFk
ZXJzIC8gcG9zdC4KKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBsb2FkZXItPnJl
cXVlc3QoKTsKKyAgICAgICAgaWYgKHVybCkKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0VVJMKFVS
TCh7IH0sICp1cmwpKTsKKyAgICAgICAgaWYgKG1ldGhvZCkKKyAgICAgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUE1ldGhvZCgqbWV0aG9kKTsKKyAgICAgICAgaWYgKGhlYWRlcnMpIHsKKyAgICAgICAg
ICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOworICAgICAgICAgICAgZm9yIChhdXRv
JiBba2V5LCB2YWx1ZV0gOiAqaGVhZGVycykgeworICAgICAgICAgICAgICAgIFN0cmluZyBoZWFk
ZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmFzU3RyaW5nKGhlYWRlclZhbHVl
KSkKKyAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRIZWFkZXJzLmFkZChrZXksIGhlYWRlclZh
bHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAgICAgICB9CisgICAgICAgIGlmIChw
b3N0RGF0YSkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICAgICAg
ICAgIGlmICghYmFzZTY0RGVjb2RlKCpwb3N0RGF0YSwgYnVmZmVyKSkgeworICAgICAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gcG9zdERhdGEiX3M7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVxdWVz
dC5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKGJ1ZmZlcikpOworICAgICAgICB9CisgICAg
ICAgIHBlbmRpbmdSZXF1ZXN0LT5tX2NvbXBsZXRpb25IYW5kbGVyKCZyZXF1ZXN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9u
ZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5k
aW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGlu
dCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCog
aGVhZGVycykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9u
c2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nKiBjb250ZW50LCBjb25zdCBib29sKiBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJp
bmcqIG1pbWVUeXBlLCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0
LCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMpCiB7CiAgICAgYXV0byBwZW5kaW5nSW50ZXJj
ZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQp
OwogICAgIGlmICghcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7CkBAIC0xMTUyLDIwICsxMjM4
LDEwNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29ucwogICAgIH0KIAogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG92ZXJyaWRlRGF0YTsKLSAgICBpZiAoYmFzZTY0RW5jb2RlZCkgeworICAgIGlm
IChiYXNlNjRFbmNvZGVkICYmICpiYXNlNjRFbmNvZGVkICYmIGNvbnRlbnQpIHsKICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoY29udGVu
dCwgYnVmZmVyKSkgeworICAgICAgICBpZiAoIWJhc2U2NERlY29kZSgqY29udGVudCwgYnVmZmVy
KSkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBj
b250ZW50Il9zOwogICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25k
V2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOwotICAgIH0gZWxzZQotICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjb250ZW50LnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQudXRmOCgpLmxlbmd0aCgpKTsKKyAg
ICB9IGVsc2UgaWYgKGNvbnRlbnQpCisgICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNvbnRlbnQtPnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQtPnV0ZjgoKS5sZW5ndGgo
KSk7CiAKICAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmQob3ZlcnJpZGVSZXNw
b25zZSwgb3ZlcnJpZGVEYXRhKTsKIH0KIAordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Omlu
dGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBib29sKiBi
YXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBjb25zdCBT
dHJpbmcmIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykKK3sKKyAgICBh
dXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1
ZXN0SWQpOworICAgIGlmICghcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFJlc291cmNlTG9hZGVy
PiBsb2FkZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgaWYgKCFsb2Fk
ZXItPmlkZW50aWZpZXIoKSkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZnVs
ZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIGlmIChi
YXNlNjRFbmNvZGVkICYmICpiYXNlNjRFbmNvZGVkKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXI7CisgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRlbnQsIGJ1ZmZlcikpIHsK
KyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gY29udGVu
dCJfczsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQudXRmOCgpLmRhdGEoKSwgY29udGVu
dC51dGY4KCkubGVuZ3RoKCkpOworCisgICAgLy8gTWltaWMgZGF0YSBVUkwgbG9hZCBiZWhhdmlv
ciAtIHJlcG9ydCBkaWRSZWNlaXZlUmVzcG9uc2UgJiBkaWRGaW5pc2hMb2FkaW5nLgorICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UocGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLT51cmwoKSwg
bWltZVR5cGUsIGRhdGEtPnNpemUoKSwgU3RyaW5nKCkpOworICAgIHJlc3BvbnNlLnNldFNvdXJj
ZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Okluc3BlY3Rvck92ZXJyaWRlKTsKKyAgICByZXNw
b25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOworICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0
dXNUZXh0KHN0YXR1c1RleHQpOworICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOwor
ICAgIGZvciAoYXV0byYgaGVhZGVyIDogaGVhZGVycykgeworICAgICAgICBTdHJpbmcgaGVhZGVy
VmFsdWU7CisgICAgICAgIGlmIChoZWFkZXIudmFsdWUtPmFzU3RyaW5nKGhlYWRlclZhbHVlKSkK
KyAgICAgICAgICAgIGV4cGxpY2l0SGVhZGVycy5hZGQoaGVhZGVyLmtleSwgaGVhZGVyVmFsdWUp
OworICAgIH0KKyAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGlj
aXRIZWFkZXJzKSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpDb250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgbG9hZGVyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5v
bk51bGwoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGJ1ZmZlci0+c2l6ZSgpKQorICAgICAg
ICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5z
aXplKCksIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgIGxvYWRlci0+ZGlkRmlu
aXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgfSk7CisgICAgcGVuZGluZ1Jl
cXVlc3QtPm1fY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBl
U3RyaW5nKQoreworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRS
ZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7CisgICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAg
ICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZv
ciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXNv
dXJjZUxvYWRlciogbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAg
IGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5h
YmxlIHRvIGFib3J0IHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBlcnJvclR5cGUgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU+KGVycm9yVHlwZVN0
cmluZyk7CisgICAgaWYgKCFlcnJvclR5cGUpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5r
bm93biBlcnJvciB0eXBlIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcjsKKyAgICBzd2l0Y2ggKGVycm9yVHlwZS52YWx1ZSgpKSB7CisgICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6R2VuZXJh
bDoKKyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNzQ29udHJvbDoKKyAg
ICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IGxvYWRlci0+dXJsKCksICJBY2Nlc3MgZGVuaWVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpB
Y2Nlc3NDb250cm9sKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6Q2FuY2VsbGF0aW9uOgorICAgICAgICBl
cnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVy
LT51cmwoKSwgIlJlcXVlc3QgY2FuY2VsZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNl
bGxhdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OlRpbWVvdXQ6CisgICAgICAgIGVycm9yID0gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAi
UmVxdWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsb2FkZXItPmRpZEZhaWwoZXJyb3IpOworICAg
IHBlbmRpbmdSZXF1ZXN0LT5tX2NvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworfQorCiBib29s
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIHsKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtaW1lVHlwZSwgInRleHQvIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGJmZDEzMWU5YjU4NTZjODRk
YTc3MjQ4MDVlNzEzOTdiN2M3NDg2YTkuLjQ0NTRiNzZlY2ZmYjZhNWIzM2U2YjVmMzZiMjgzNmMz
YTc2MmNkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtODgsMTAgKzg4LDEzIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBTdHJpbmcqIHNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZSkgZmluYWw7CiAgICAg
dm9pZCByZXNvbHZlV2ViU29ja2V0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JikgZmluYWw7CiAgICAgdm9pZCBzZXRJbnRlcmNlcHRp
b25FbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSBmaW5hbDsKLSAgICB2b2lkIGFk
ZEludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29s
KiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdv
cmtTdGFnZVN0cmluZykgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29u
c3QgYm9vbCogaXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFs
OwotICAgIHZvaWQgaW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCkgZmluYWw7Ci0gICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBi
b29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3Rh
dHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVy
cykgZmluYWw7CisgICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wq
IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgpIGZpbmFsOworICAgIHZvaWQgcmVt
b3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25z
dCBib29sKiBpc1JlZ2V4KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0
YWdlU3RyaW5nKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXF1ZXN0KEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25z
dCBTdHJpbmcqIHVybCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcq
IHBvc3REYXRhKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIGNvbnRlbnQsIGNv
bnN0IGJvb2wqIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGlu
dCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCog
aGVhZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgY29uc3QgYm9vbCogYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgaW50
IHN0YXR1cywgY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QmIGhl
YWRlcnMpIGZpbmFsOworICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvcihFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkg
ZmluYWw7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAgICB2b2lkIHdpbGxS
ZWNhbGN1bGF0ZVN0eWxlKCk7CkBAIC0xMTgsOSArMTIxLDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IG1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciYpOwogICAgIHZvaWQgc2V0SW5pdGlh
bFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVN0cmluZyk7CiAgICAgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihEb2N1
bWVudCYpOwotICAgIGJvb2wgd2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CisgICAgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwor
ICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgdm9pZCBpbnRl
cmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlcXVlc3QqKT4mJik7CiAKICAgICB2b2lkIHNlYXJjaE90aGVyUmVxdWVzdHMo
Y29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZlB0cjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CiAgICAgdm9pZCBz
ZWFyY2hJblJlcXVlc3QoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGlzUmVnZXgsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g+PiYpOwpAQCAtMTQwLDcgKzE0NSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwg
SW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUpOwogCi0gICAgYm9vbCBzaG91bGRJbnRl
cmNlcHQoVVJMKTsKKyAgICB1c2luZyBOZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U7CisgICAgYm9vbCBzaG91bGRJbnRlcmNlcHQoVVJMLCBO
ZXR3b3JrU3RhZ2UpOworICAgIHZvaWQgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICB2
b2lkIGNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpOwogCiAgICAgV2ViU29ja2V0KiB3ZWJTb2Nr
ZXRGb3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwpAQCAtMTUzLDYgKzE2MCwy
MCBAQCBwcml2YXRlOgogCiAgICAgZG91YmxlIHRpbWVzdGFtcCgpOwogCisgICAgY2xhc3MgUGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3QgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5k
aW5nSW50ZXJjZXB0UmVxdWVzdCk7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qq
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIDogbV9sb2FkZXIobG9hZGVyKQor
ICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKQorICAgICAgICB7IH0KKworICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCgpID0g
ZGVmYXVsdDsKKyAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICAg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QqKT4gbV9jb21w
bGV0aW9uSGFuZGxlcjsKKyAgICB9OworCiAgICAgY2xhc3MgUGVuZGluZ0ludGVyY2VwdFJlc3Bv
bnNlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlc3Bv
bnNlKTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yMDQsMTUgKzIyNSwx
OCBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBib29sIGNhc2VTZW5z
aXRpdmUgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgaXNSZWdleCB7IGZhbHNlIH07CisgICAgICAg
IE5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UgeyBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlIH07CiAK
ICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRlcmNlcHQmIG90aGVyKSBj
b25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdXJsID09IG90aGVyLnVybAogICAg
ICAgICAgICAgICAgICYmIGNhc2VTZW5zaXRpdmUgPT0gb3RoZXIuY2FzZVNlbnNpdGl2ZQotICAg
ICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdleDsKKyAgICAgICAgICAgICAg
ICAmJiBpc1JlZ2V4ID09IG90aGVyLmlzUmVnZXgKKyAgICAgICAgICAgICAgICAmJiBuZXR3b3Jr
U3RhZ2UgPT0gb3RoZXIubmV0d29ya1N0YWdlOwogICAgICAgICB9CiAgICAgfTsKICAgICBWZWN0
b3I8SW50ZXJjZXB0PiBtX2ludGVyY2VwdHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5p
cXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdD4+IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVl
c3RzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ludGVyY2Vw
dFJlc3BvbnNlPj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzOwogCiAgICAgLy8gRklYTUU6
IEluc3BlY3Rvck5ldHdvcmtBZ2VudCBzaG91bGQgbm90IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2Fs
Y3VsYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAppbmRleCAyMzFlZGVjOGNjYzcxZDY1MjE3MTA2MzYzZjVjYzM0OTkw
YTE2NDdlLi42NTllMmZlODkwN2IzMTU5NzY2MGE3ZGRjNDhiOTQ1ZDMzZjBmNWVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTg0Niw3ICs4NDYsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQogCiAgICAgcmVx
dWVzdC51cGRhdGVSZWZlcnJlclBvbGljeShkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cmVmZXJy
ZXJQb2xpY3koKSA6IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CiAK
LSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdCgm
ZnJhbWUsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQoJmZyYW1lLCByZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpKSkKICAgICAgICAgcmVxdWVzdC5zZXRDYWNoaW5nUG9saWN5KENhY2hpbmdQb2xpY3k6OkRp
c2FsbG93Q2FjaGluZyk7CiAKICAgICBhdXRvJiBwYWdlID0gKmZyYW1lLnBhZ2UoKTsKQEAgLTE0
MzYsNyArMTQzNiw3IEBAIFZlY3RvcjxSZWY8U1ZHSW1hZ2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6YWxsQ2FjaGVkU1ZHSW1hZ2VzKCkgY29uc3QKIAogUmVzb3VyY2VFcnJvck9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxv
YWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0
UmVxdWVzdChmcmFtZSgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KGZyYW1lKCksIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VF
cnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCksICJJbnNwZWN0b3IgaW50ZXJjZXB0Il9zIH0pOwogCiAgICAgaWYgKHJlcXVl
c3QuY2hhcnNldCgpLmlzRW1wdHkoKSAmJiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6
U2NyaXB0IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwppbmRleCAxYzgxMjYwZDhkYjIzNDhjMDBi
ZmVkOTViN2JjNzAyMDE1MDBjNWRlLi5lMDI4ZDg5NjQxMGJiMzhiOTEzZmNjMmE5YzVjMDQ1Nzcx
OTUwNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwpAQCAtMTYxLDcgKzE2
MSw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VP
dmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTog
bG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51
bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJl
c3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CkBAIC0zNjQsNyArMzY0LDcgQEAgV0kuTmV0d29ya01hbmFn
ZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAg
ICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAgICAgICBjYXNl
U2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAg
ICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAg
ICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0
d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICB9Owog
CiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5ldHdvcmsuYWRkSW50
ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0zOTcsNyArMzk3LDcgQEAgV0kuTmV0d29ya01h
bmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAg
ICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAgICAgICBj
YXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAg
ICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAg
ICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsu
TmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JC
YWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICB9
OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5ldHdvcmsucmVt
b3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC05MDYsMTIgKzkwNiwxNyBAQCBXSS5O
ZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZGVsZXRlKHJlcXVlc3RJ
ZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICByZXF1ZXN0SW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1
ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIHt0YXJnZXQs
IHJlcXVlc3RJZCwgcmVxdWVzdH0pOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQo
dGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbGV0IHVybCA9IFdJ
LnVybFdpdGhvdXRGcmFnbWVudChyZXNwb25zZS51cmwpOwogICAgICAgICBsZXQgbG9jYWxSZXNv
dXJjZU92ZXJyaWRlID0gdGhpcy5sb2NhbFJlc291cmNlT3ZlcnJpZGVGb3JVUkwodXJsKTsKICAg
ICAgICAgaWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUgfHwgbG9jYWxSZXNvdXJjZU92ZXJyaWRl
LmRpc2FibGVkKSB7Ci0gICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENv
bnRpbnVlKHJlcXVlc3RJZCk7CisgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVy
Y2VwdENvbnRpbnVlKHJlcXVlc3RJZCwgSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0
d29ya1N0YWdlLlJlc3BvbnNlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC0xMzc3LDcgKzEzODIsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVy
cmlkZS51cmwsCiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJp
ZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgaXNSZWdleDogbG9jYWxSZXNvdXJjZU92
ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tl
bmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgIHN0YWdl
OiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAg
ICAgICAgIH07CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3Jr
LmFkZEludGVyY2VwdGlvbiAvIE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhp
c3QuCkBAIC0xNDMzLDQgKzE0MzgsNSBAQCBXSS5OZXR3b3JrTWFuYWdlci5FdmVudCA9IHsKICAg
ICBCb290c3RyYXBTY3JpcHREZXN0cm95ZWQ6ICJuZXR3b3JrLW1hbmFnZXItYm9vdHN0cmFwLXNj
cmlwdC1kZXN0cm95ZWQiLAogICAgIExvY2FsUmVzb3VyY2VPdmVycmlkZUFkZGVkOiAibmV0d29y
ay1tYW5hZ2VyLWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLWFkZGVkIiwKICAgICBMb2NhbFJlc291
cmNlT3ZlcnJpZGVSZW1vdmVkOiAibmV0d29yay1tYW5hZ2VyLWxvY2FsLXJlc291cmNlLW92ZXJy
aWRlLXJlbW92ZWQiLAorICAgIFJlcXVlc3RJbnRlcmNlcHRlZDogIm5ldHdvcmstbWFuYWdlci1y
ZXF1ZXN0LWludGVyY2VwdGVkIgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcwppbmRl
eCA1OWMyOWM5YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgwMGFhLi5mZTg4MjlhNzFiZmQw
ZWVkODU2YjQxYzNhYWVjZTZhZTdmMWExNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVy
LmpzCkBAIC0xMDgsNiArMTA4LDExIEBAIFdJLk5ldHdvcmtPYnNlcnZlciA9IGNsYXNzIE5ldHdv
cmtPYnNlcnZlciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlzcGF0Y2hlcgogICAgICAgICAv
LyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogICAgIH0KIAorICAgIHJlcXVlc3RJbnRlcmNlcHRl
ZChyZXF1ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5y
ZXF1ZXN0SW50ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QpOworICAg
IH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQocmVxdWVzdElkLCByZXNwb25zZSkKICAgICB7
CiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlc3BvbnNlSW50ZXJjZXB0ZWQodGhpcy5fdGFy
Z2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBiOGRjY2FkMmMyY2Y4
ZDAwMDE0MDA0MDdjYWNhNmUyN2IxZjg4MjQ5Li40MmYzYjQyODk0MjM0OWZiYWJlODFkMzFhNjVi
YmZmOTcxNmIwOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJ
bmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBA
IC0yMzAsOCArMjMxLDE3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChS
ZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAoIXRy
eUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFy
YW1ldGVycykpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29y
a1Byb2Nlc3MiKTsKLSAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291
cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmlu
Z1RpbWUocmVzb3VyY2UpKTsKLSAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChyZXNvdXJj
ZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfHwg
IUluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChy
ZXNvdXJjZUxvYWRlci5mcmFtZSgpLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkpKSB7CisgICAg
ICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJj
ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9hZGVyLCBb
dGhpcywgcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmUHRyKCZyZXNvdXJjZUxvYWRl
ciksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgcmVzb3VyY2VdKGNvbnN0IFJlc291cmNlUmVxdWVzdCogcmVxdWVzdCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdCkKKyAgICAgICAgICAgICAgICBzY2hlZHVsZUxv
YWRGcm9tTmV0d29ya1Byb2Nlc3MoKnByb3RlY3RlZFJlc291cmNlTG9hZGVyLCAqcmVxdWVzdCwg
dHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9KTsKICAgICB9CiAKICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxl
cnMiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAxNzg4YTQ1Yjc3M2QwMjcyNmU0YmFmNGNmMGU4NGM3ZDk2N2E0MDBiLi5m
YWM2MzJlMTQ0NWVkY2E4Nzc5YzA1NTFjZGI4MzkxM2QxZGZkNTdkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzYgQEAKKzIwMjAtMDUtMjggIFBhdmVsICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBp
bnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsKKyAg
ICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVl
c3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQg
b3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3Jl
cXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291
cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVy
dGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRo
LWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJl
c291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJp
ZGVuLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qczogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRl
c3QuanM6CisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29yay9sb2NhbC1y
ZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhMi5qc29uOiBBZGRlZC4KKwogMjAyMC0wNS0xMiAg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2lu
Q2Fpcm9dW1dLMV0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGRvZXNuJ3Qgd29yayBzaW5jZSByMjQ0
MTgyIGluIEFjY2VsZXJhdGVkIENvbXBvc2l0aW5nIG1vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1y
ZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQyMTI1OTA0ODM1ZWYxMGI2YzA2MDM0ZjYxNWYzZGVmMTE4ZjllYWMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor
QUxFUlQ6IE9SSUdJTkFMIEhUTUwgQ09OVEVOVAorQUxFUlQ6IFJFUExBQ0VEIEhUTUwgQ09OVEVO
VAorT3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13
aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjEyNTkwNDgzNWVmMTBiNmMwNjAzNGY2MTVmM2Rl
ZjExOGY5ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9u
c2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQUxFUlQ6IE9SSUdJTkFMIEhUTUwgQ09O
VEVOVAorQUxFUlQ6IFJFUExBQ0VEIEhUTUwgQ09OVEVOVAorT3ZlcnJpZGRlbiBwYWdlIGNvbnRl
bnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1h
aW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkY2FmMTc3M2JkY2Zi
ODNjN2NhYzg2ZGEzMDg0YjUyODkzYzVkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVz
b3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNT
dWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWFpblJlc291cmNl
IHdpdGggcmVzcG9uc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIk1haW4gcmVzb3VyY2UgdXNl
cyByZXF1ZXN0IGludGVyY2VwdGlvbiBvbiBuZXh0IHBhZ2UgbG9hZCBhbmQgZnVsZmlsbHMgcmVx
dWVzdCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0g
V0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29y
a0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1t
YWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6
IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UgPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1
ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2h0bWwiLAor
ICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9gK2BzY3JpcHQ+
PC9oZWFkPjxib2R5PjxwPk92ZXJyaWRkZW4gcGFnZSBjb250ZW50PC9wPjxzY3JpcHQ+YWxlcnQo
IlJFUExBQ0VEIEhUTUwgQ09OVEVOVCIpOyBUZXN0UGFnZS5jb21wbGV0ZVRlc3QoKTs8L2ArYHNj
cmlwdD48L2JvZHk+PC9odG1sPmAsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAwLAor
ICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgICAgICAg
ICBoZWFkZXJzOiB7fSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5h
Z2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlc3BvbnNlKTsKKwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2Us
IHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24g
aW50ZXJjZXB0aW5nIHRoZSBtYWluIHJlc291cmNlIGxvYWQgd2l0aCByZXNwb25zZS48L3A+Cis8
c2NyaXB0PmFsZXJ0KCJPUklHSU5BTCBIVE1MIENPTlRFTlQiKTs8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291
cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMwNzEyYWUxN2FhZGI1MzMyMTQxYjM1YzNjM2QzMjM4YzFh
OGIyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEs
NDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3Bl
Y3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3QuTWFpblJlc291cmNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJNYWluIHJlc291
cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gb24gbmV4dCBwYWdlIGxvYWQiLAorICAgICAg
ICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFp
blRhcmdldCgpOworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRl
cmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5o
dG1sIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdv
cmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
bGV0IGludGVyY2VwdFdpdGhSZXF1ZXN0ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
bGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAg
ICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsK
KyAgICAgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1s
IiwKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkCisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2Vw
dFdpdGhSZXF1ZXN0KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtp
Z25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVx
dWVzdCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5nIHRoZSBtYWluIHJlc291cmNlIGxvYWQuPC9w
PgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRNTCBDT05URU5UIik7PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTQxNTY4YThjNDE1MWIzMTE2ZTMx
MjIzNjc3ZDI1NzYwN2U0NDBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGFsdGVy
aW5nIHJlcXVlc3QgcHJvcGVydGllcy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdC5NZXRob2QKK01ldGhvZD1QT1NUCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuSGVhZGVycworT3ZlcnJpZGVuIGhlYWRlcjpvdmVycmlk
ZW4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Qb3N0
RGF0YQorT3ZlcnJpZGVuIHZhbHVlOiBvdmVycmlkZW4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0
aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjU0NTg3NTNjNGFmYzBk
OGNjZDA3ZTRmOTAwOWZjYTgzODM5ZjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVz
Lmh0bWwKQEAgLTAsMCArMSwxMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIGZldGNoRGF0
YSh1cmwpCit7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTsKKyAgICByZXR1
cm4gYXdhaXQgcmVzcG9uc2UudGV4dCgpOworfQorCithc3luYyBmdW5jdGlvbiBwb3N0RGF0YSh1
cmwpCit7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7CisgICAgICAgIG1l
dGhvZDogIlBPU1QiLAorICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAiQ29udGVudC1U
eXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKKyAgICAgICAgfSwKKyAg
ICAgICAgYm9keTogInZhbHVlPW9yaWdpbmFsIgorICAgIH0pOworICAgIHJldHVybiBhd2FpdCBy
ZXNwb25zZS50ZXh0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9
IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmlu
dGVyY2VwdFJlcXVlc3QuTWV0aG9kIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1
ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAg
ICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICAgICAg
YXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAg
ICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9tZXRob2QiLAorICAgICAgICAgICAgICAgIHN0
YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3Qg
PSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCBy
ZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgaWYgKCFyZXF1ZXN0LnVybC5p
bmNsdWRlcygnP21ldGhvZCcpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2Uo
eworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIG1l
dGhvZDogIlBPU1QiLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAg
ICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuZXZhbHVh
dGUoImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9tZXRob2QnKSIpOwor
ICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVudGltZUFnZW50LmF3YWl0UHJv
bWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0SWQsIHRydWUpOworICAgICAgICAgICAgbGV0IGRh
dGEgPSBldmFsKCcoJyArIHJlc3BvbnNlLnJlc3VsdC52YWx1ZSArICcpJyk7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiTWV0aG9kPSIgKyBkYXRhLm1ldGhvZCk7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdC5IZWFkZXJzIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
cyByZXF1ZXN0IGhlYWRlcnMgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsK
KyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAg
ICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7
CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/aGVhZGVycyIsCisgICAgICAgICAg
ICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5S
ZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRo
UmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1
ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcXVl
c3QudXJsLmluY2x1ZGVzKCc/aGVhZGVycycpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVz
dC5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnM6IHsgInZhbHVlIjogIm92ZXJyaWRlbiIgfSwKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwg
aW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2Fp
dCB0YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlKCJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRl
cmNlcHQtZWNoby5waHA/aGVhZGVycycpIik7CisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0
IHRhcmdldC5SdW50aW1lQWdlbnQuYXdhaXRQcm9taXNlKHJlc3BvbnNlLnJlc3VsdC5vYmplY3RJ
ZCwgdHJ1ZSk7CisgICAgICAgICAgICBsZXQgZGF0YSA9IGV2YWwoJygnICsgcmVzcG9uc2UucmVz
dWx0LnZhbHVlICsgJyknKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJPdmVycmlk
ZW4gaGVhZGVyOiIgKyBkYXRhLmhlYWRlcnMudmFsdWUpOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3QuUG9zdERhdGEiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3Qg
cG9zdCBkYXRhIGludGVyY2VwdGlvbiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAg
ICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgICAgICBh
d2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAg
ICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP3Bvc3REYXRhIiwKKyAgICAgICAgICAgICAgICBz
dGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3Qs
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGludGVyY2VwdFdpdGhSZXF1ZXN0
ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwg
cmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIGlmICghcmVxdWVzdC51cmwu
aW5jbHVkZXMoJz9wb3N0RGF0YScpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZv
a2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAg
IG1ldGhvZDogIlBPU1QiLAorICAgICAgICAgICAgICAgICAgICBwb3N0RGF0YTogYnRvYSgidmFs
dWU9b3ZlcnJpZGVuIiksCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdpdGhSZXF1ZXN0KTsKKwor
ICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFs
dWF0ZSgicG9zdERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/cG9zdERhdGEnKSIp
OworICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVudGltZUFnZW50LmF3YWl0
UHJvbWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0SWQsIHRydWUpOworICAgICAgICAgICAgbGV0
IGRhdGEgPSBldmFsKCcoJyArIHJlc3BvbnNlLnJlc3VsdC52YWx1ZSArICcpJyk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiT3ZlcnJpZGVuIHZhbHVlOiAiICsgZGF0YS5wb3N0LnZh
bHVlKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmlu
aXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gYWx0ZXJpbmcgcmVxdWVzdCBwcm9wZXJ0aWVz
LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU1ZjRlMDdl
ZmI2MjZhM2ZhM2ZjZTk1NmQzYzUxMWY5ODAyM2FhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3Vi
cmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxFUlQ6IERFRkFVTFQgb3Zl
cnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURFTiBvdmVycmlkZS5qcyBURVhUCitUZXN0IHJl
cXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVzb3VyY2UgbG9hZC4KKwor
Cis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdAorLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjU2YTgzOGY4NDFi
YzViNDM0MDdmNjY0N2FhZTA2MjM1YTU0MDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNv
dXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0FMRVJUOiBERUZB
VUxUIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBlcnJv
ciBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmlu
dGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBlcnJvcgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU5OGNjY2E0ZTQzMzk4YjVhM2Y4MzhhMDMxNmVhMWJiM2RjMjIwZmYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbApAQCAtMCwwICsx
LDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdCIpOwor
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggZXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBlcnJvciIsCisgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdN
YWluVGFyZ2V0KCk7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZElu
dGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUuanMiLAorICAgICAg
ICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3Rh
Z2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworICAgIAorICAgICAgICAgICAgbGV0IGludGVy
Y2VwdFdpdGhSZXF1ZXN0ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJn
ZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIHRh
cmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvci5pbnZva2UoeworICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIGVycm9yVHlw
ZTogIkdlbmVyYWwiLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAg
ICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZh
bHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0
aW9uIHdpdGggZXJyb3IgZm9yIHRoZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3Vi
cmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEzYWU4MjY1
ZWE0OTI1ZWM5NWViY2VjOGFhMWY3ZWZmNTNkNzU4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3Vi
cmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitBTEVS
VDogREVGQVVMVCBvdmVycmlkZS5qcyBURVhUCitBTEVSVDogT1ZFUlJJRERFTiBvdmVycmlkZS5q
cyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UgZm9yIHRoZSBz
dWJyZXNvdXJjZSBsb2FkLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRl
cmNlcHRSZXF1ZXN0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LlN1YnJlc291cmNlIHdpdGggcmVzcG9uc2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJj
ZS13aXRoLXJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZDY0NzVmMzAzMWY0OWM1NjUzMDQ2MmYxNTE1OTU2OWVlNGY4YmNhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKQEAgLTAsMCAr
MSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5z
cGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QiKTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIHJlc3BvbnNlIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2Ui
LAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgIEluc3BlY3RvclRlc3QuZGVidWco
KTsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAg
ICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9r
ZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIsCisgICAgICAgICAgICAgICAgc3RhZ2U6
IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVxdWVzdCA9IChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVl
c3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50Lmlu
dGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZTogInRleHQvamF2YXNjcmlw
dCIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGBhbGVydCgiT1ZFUlJJRERFTiBvdmVy
cmlkZS5qcyBURVhUIik7IFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJPdmVycmlk
ZUNvbnRlbnREaWRMb2FkIik7YCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisg
ICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAgICAgICAgICAg
IGhlYWRlcnM6IHt9LAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAg
ICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZh
bHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgICAgICBhd2FpdCBJ
bnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIk92ZXJyaWRlQ29udGVudERpZExvYWQiKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVx
dWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNwb25zZSBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQu
PC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVycmlkZS5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291
cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE0N2Q5NzcwZWVhODBjZjVmM2E1ODJlNWJmMDZlYjJmYjAw
OGRmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbApAQCAtMCwwICsxLDQz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0
b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdCIpOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LlN1YnJlc291cmNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdWJyZXNvdXJjZSB1
c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKwkJCQkJ
ICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCkKKwkJCQkJCWF3YWl0IHRhcmdl
dC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisJCQkJCQkJCXVybDogImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUu
anMiLAorCQkJCQkJCQlzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlcXVlc3QsCisJCQkJCQl9KTsKKworCQkJCQkJbGV0IGludGVyY2VwdFdpdGhSZXF1
ZXN0ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJ
ZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3Jr
QWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAg
dXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9p
bnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzIiwKKyAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdElkCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAgICAg
ICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdl
ci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdpdGhSZXF1ZXN0KTsKKworICAg
ICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFs
c2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKwkJCQkJCWF3YWl0IEluc3BlY3Rv
clRlc3QuYXdhaXRFdmVudCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGlu
dGVyY2VwdGlvbiBpbnRlcmNlcHRpbmcgdGhlIHN1YnJlc291cmNlIGxvYWQuPC9wPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9vdmVycmlkZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZk
ZmViZDE4NmFhYzZkN2Y3MzEzZjFlODFjM2E5YzNhNjZlMTc3YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVy
Y2VwdC1lY2hvLnBocApAQCAtMCwwICsxLDE2IEBACis8P3BocAorJG1ldGhvZCA9ICRfU0VSVkVS
WydSRVFVRVNUX01FVEhPRCddOworZWNobyAie1xuIjsKK2VjaG8gIiAgXCJtZXRob2RcIjogXCIk
bWV0aG9kXCIsXG4iOworZWNobyAiICBcImhlYWRlcnNcIjoge1xuIjsKK2ZvcmVhY2ggKGdldGFs
bGhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWUpIHsKKwllY2hvICIgICAgXCIkbmFtZVwiOiBc
IiR2YWx1ZVwiLFxuIjsKK30KK2VjaG8gIiAgfSxcbiI7CitlY2hvICIgIFwicG9zdFwiOiB7XG4i
OworZm9yZWFjaCAoJF9QT1NUIGFzICRuYW1lID0+ICR2YWx1ZSl7CisJZWNobyAiICAgIFwiJG5h
bWVcIjogXCIkdmFsdWVcIixcbiI7Cit9CitlY2hvICIgIH0sXG4iOworZWNobyAifVxuIjsKKz8+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVl
c3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2E0YThiNjE3YjA0Yzk1Y2VhMTQ2
MzFiNGRjZWYwODlmMzYxOTQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJp
ZGVuLXBhZ2UuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
CSAgPGhlYWQ+CisJCQkJPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5q
cyI+CisJCQkJPC9zY3JpcHQ+CisJCTwvaGVhZD4KKwkgIDxib2R5PgorCQkJCTxwPk92ZXJyaWRk
ZW4gcGFnZSBjb250ZW50PC9wPgorCQkJCTxzY3JpcHQ+YWxlcnQoIlJFUExBQ0VEIEhUTUwgQ09O
VEVOVCIpOyBUZXN0UGFnZS5jb21wbGV0ZVRlc3QoKTs8L3NjcmlwdD4KKwkJPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1y
ZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc4ZWM0ZTI2MTE1N2QzMzA5
MTljMTMyODk5OTU1Nzc5ODkzN2VhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92
ZXJyaWRlbi1zY3JpcHQuanMKQEAgLTAsMCArMSwyIEBACithbGVydCgiT1ZFUlJJREVOIG92ZXJy
aWRlLmpzIFRFWFQiKTsKK1Rlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJPdmVycmlk
ZUNvbnRlbnREaWRMb2FkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCmluZGV4IGEwMjY0OWQ1NmJk
YjNkMjg1YzFmMGQ3ZjgwMGNmZTQxMDg5MjI2NDEuLjgzMWE2MWY2Nzg1ZTQ0ODhiMTJkN2RmZGVm
MWZlNjZkMzc1NTEyMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCkBAIC04NywxMiArODcsMTQg
QEAgVGVzdFBhZ2UucnVuVGVzdCA9IHdpbmRvdy5ydW5UZXN0ID0gZnVuY3Rpb24oKQogICAgIGlm
ICh0eXBlb2YgdGVzdEZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgIGFsZXJ0KCJG
YWlsZWQgdG8gc2VuZCB0ZXN0KCkgYmVjYXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4iKTsKICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBsZXQgdXJsID0gdGVzdFJ1bm5lci5pbnNwZWN0b3JUZXN0U3R1YlVSTDsKICAgICBpZiAo
IXVybCkgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIG9idGFpbiBpbnNwZWN0b3IgdGVzdCBz
dHViIFVSTC4iKTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJbkZy
b250ZW5kKGluaXRpYWxpemVycykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MzE3NGQwNmE4ZTNkYTM0NjE1MWM2MjQ0MWJjMzBmNWFiOTBlM2VhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24uCisKKwor
PT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogc2V0VXAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrIHJl
cXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0Q29udGludWUK
K1Jlc3BvbnNlIGRhdGE6ICd7ImFscGhhIjoiYmV0YSIsImdhbW1hIjoxMjM0NX0nCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50
ZXJjZXB0ZWQuaW50ZXJjZXB0V2l0aFJlcXVlc3QKK3RleHQ6IGludGVyY2VwdGVkIHJlcXVlc3QK
KworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjog
cmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UKK3RleHQ6IGlu
dGVyY2VwdGVkIGRhdGEKK3N0YXR1czogMjAwCitzdGF0dXNUZXh0OiBPSworbWltZVR5cGU6IGFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbQorbXktaGVhZGVyOiBteS12YWx1ZQorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2Vw
dGVkLmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IKK1JlcXVlc3QgZXJyb3I6ICdSZXF1ZXN0IGNh
bmNlbGVkJworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTc4ZWU3MzczMmYwYjA4YjMwMjA5Yzk0OWYz
N2Q4ZGMzOGQ4YTc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbApAQCAtMCwwICsxLDE3NyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSgpIHsKKyAg
ICB0cnkgeworICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgncmVzb3VyY2VzL2Rh
dGEuanNvbicpOworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdGV4dDogYXdhaXQgcmVz
cG9uc2UudGV4dCgpLAorICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsCisgICAg
ICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LAorICAgICAgICAgICAgbWlt
ZVR5cGU6IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSwKKyAgICAgICAgICAg
IGhlYWRlcjogcmVzcG9uc2UuaGVhZGVycy5nZXQoJ215LWhlYWRlcicpLAorICAgICAgICB9Owor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIGUubWVzc2FnZTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVB
c3luY1N1aXRlKCJOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIik7CisKKyAgICBmdW5jdGlv
biBwcmludEZldGNoUmVzdWx0KHJlc3VsdCkKKyAgICB7CisgICAgICAgIFByb3RvY29sVGVzdC5s
b2coInRleHQ6ICIgKyByZXN1bHQudGV4dCk7CisgICAgICAgIFByb3RvY29sVGVzdC5sb2coInN0
YXR1czogIiArIHJlc3VsdC5zdGF0dXMpOworICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJzdGF0
dXNUZXh0OiAiICsgcmVzdWx0LnN0YXR1c1RleHQpOworICAgICAgICBQcm90b2NvbFRlc3QubG9n
KCJtaW1lVHlwZTogIiArIHJlc3VsdC5taW1lVHlwZSk7CisgICAgICAgIFByb3RvY29sVGVzdC5s
b2coIm15LWhlYWRlcjogIiArIHJlc3VsdC5oZWFkZXIpOworICAgIH0KKworICAgIGxldCB1cmw7
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAic2V0VXAiLAorICAgICAg
ICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IFtyZXN1bHQxLCByZXN1bHQyLCB7cmVz
dWx0fV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJv
dG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmVuYWJsZSIsIHBhcmFtczoge319
KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhv
ZDogIlJ1bnRpbWUuZW5hYmxlIiwgcGFyYW1zOiB7fX0pLAorICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBh
cmFtczogeworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZG9jdW1lbnQuVVJMIiwK
KyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wu
YXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLnNldEludGVyY2VwdGlvbkVuYWJsZWQiLCBw
YXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICB9fSksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgbGV0IGJhc2VVUkwgPSBy
ZXN1bHQudmFsdWUuc3Vic3RyaW5nKDAsIHJlc3VsdC52YWx1ZS5sYXN0SW5kZXhPZigiLyIpKTsK
KyAgICAgICAgICAgIHVybCA9IGJhc2VVUkwgKyAiL3Jlc291cmNlcy9kYXRhLmpzb24iOworICAg
ICAgICAgICAgYXdhaXQgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJO
ZXR3b3JrLmFkZEludGVyY2VwdGlvbiIsIHBhcmFtczogeyB1cmwsIHN0YWdlOiAicmVxdWVzdCIg
fX0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0
ZWQuaW50ZXJjZXB0Q29udGludWUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgY29udGlu
dWUgaW50ZXJjZXB0ZWQgcmVxdWVzdC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAg
ICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAgICBsZXQgW2Zl
dGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChb
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6
ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIGV4cHJl
c3Npb246ICJmZXRjaERhdGEoKSIsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAg
ICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQoe2V2ZW50OiAiTmV0d29yay5yZXF1ZXN0
SW50ZXJjZXB0ZWQifSksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgLy8gTGV0IHRo
ZSBsb2FkIGNvbnRpbnVlLgorICAgICAgICAgICAgbGV0IFtmZXRjaFJlc3VsdF0gPSBhd2FpdCBQ
cm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21t
YW5kKHttZXRob2Q6ICJSdW50aW1lLmF3YWl0UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAg
ICAgICAgICAgICBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2Jq
ZWN0SWQsCisgICAgICAgICAgICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsCisgICAgICAg
ICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29t
bWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIsIHBhcmFtczogeworICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1zLnJlcXVl
c3RJZCwKKyAgICAgICAgICAgICAgICAgICAgc3RhZ2U6ICJyZXF1ZXN0IiwKKyAgICAgICAgICAg
ICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2co
IlJlc3BvbnNlIGRhdGE6ICciICsgZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlLnRleHQudHJpbSgp
ICsgIiciKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVy
Y2VwdGVkLmludGVyY2VwdFdpdGhSZXF1ZXN0IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
IGZ1bGZpbGwgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHJlc3BvbnNlLiIsCisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5kIGludGVyY2VwdCBpdC4K
KyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9
IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5h
d2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAg
ICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIiwKKyAgICAgICAgICAgICAg
ICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZl
bnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KSwKKyAgICAgICAgICAgIF0pOworCisg
ICAgICAgICAgICAvLyBGdWxmaWxsIHRoZSByZXF1ZXN0IHdpdGggZGF0YS4KKyAgICAgICAgICAg
IGxldCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAg
IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFBy
b21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBm
ZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9iamVjdElkLAorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm5CeVZhbHVlOiB0cnVlLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJj
ZXB0V2l0aFJlcXVlc3QiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElk
OiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAg
IHVybDogdXJsLnJlcGxhY2UoJ2RhdGEuanNvbicsICdkYXRhMi5qc29uJyksCisgICAgICAgICAg
ICAgICAgfX0pLAorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9n
KCJ0ZXh0OiAiICsgZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlLnRleHQpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3Jr
IHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBmdWxmaWxsIGludGVy
Y2VwdGVkIHJlcXVlc3Qgd2l0aCByZXNwb25zZS4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgewor
ICAgICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAgICBs
ZXQgW2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNl
LmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHtt
ZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAg
IGV4cHJlc3Npb246ICJmZXRjaERhdGEoKSIsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAg
ICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQoe2V2ZW50OiAiTmV0d29yay5y
ZXF1ZXN0SW50ZXJjZXB0ZWQifSksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgLy8g
RnVsZmlsbCB0aGUgcmVxdWVzdCB3aXRoIGRhdGEuCisgICAgICAgICAgICBsZXQgW2ZldGNoUmVz
dWx0XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90
b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdhaXRQcm9taXNlIiwgcGFyYW1z
OiB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VPYmplY3RJZDogZmV0Y2hSZXN1bHRQcm9t
aXNlLnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuQnlWYWx1ZTog
dHJ1ZQorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90
b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhS
ZXNwb25zZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVy
Y2VwdGVkRXZlbnQucGFyYW1zLnJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVz
OiAyMDAsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAg
ICAgICAgICAgIGhlYWRlcnM6IHsgIm15LWhlYWRlciI6ICJteS12YWx1ZSIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgbWltZVR5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLAorICAgICAg
ICAgICAgICAgICAgICBjb250ZW50OiBidG9hKCJpbnRlcmNlcHRlZCBkYXRhIiksCisgICAgICAg
ICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IHRydWUsCisgICAgICAgICAgICAgICAgfX0pLAor
ICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBwcmludEZldGNoUmVzdWx0KGZldGNoUmVzdWx0
LnJlc3VsdC52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVl
c3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0IGFib3J0IGludGVyY2VwdGVkIHJlcXVlc3Qgd2l0aCBlcnJvci4iLAorICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNl
cHQgaXQuCisgICAgICAgICAgICBsZXQgW2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRF
dmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJv
dG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7
CisgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoKSIsCisgICAgICAg
ICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZl
bnQoe2V2ZW50OiAiTmV0d29yay5yZXF1ZXN0SW50ZXJjZXB0ZWQifSksCisgICAgICAgICAgICBd
KTsKKworICAgICAgICAgICAgLy8gQWJvcnQgdGhlIHJlcXVlc3QgYXMgY2FuY2VsZWQuCisgICAg
ICAgICAgICBsZXQgW2ZldGNoUmVzdWx0XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUu
YXdhaXRQcm9taXNlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VPYmpl
Y3RJZDogZmV0Y2hSZXN1bHRQcm9taXNlLnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3Jr
LmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdElkOiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAg
ICAgICAgICAgICAgIGVycm9yVHlwZTogIkNhbmNlbGxhdGlvbiIsCisgICAgICAgICAgICAgICAg
fX0pLAorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJSZXF1
ZXN0IGVycm9yOiAnIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZSArICInIik7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVl
c3QgaW50ZXJjZXB0aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVl
LXJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNv
dXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sCmluZGV4IDQ0ODA2NDIwMDQ0NzY5
N2ZiMDdmNDE2ZTk3ODYzOThlMDAzZDI0NjAuLmQ2NmUxNDBlYjcxNzg2NDdjMzg4NjI5YjBkMTNl
MWFhMDFhMDMwYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xv
Y2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUt
cmVzcG9uc2UuaHRtbApAQCAtNDYsNyArNDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
ICAgIC8vIExldCB0aGUgbG9hZCBjb250aW51ZS4KICAgICAgICAgICAgIGF3YWl0IFByb21pc2Uu
YWxsKFsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVu
dDogIk5ldHdvcmsucmVzcG9uc2VSZWNlaXZlZCJ9KSwKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGlu
dWUiLCBwYXJhbXM6IHtyZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJlcXVlc3RJZH19
KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhv
ZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHtyZXF1ZXN0SWQ6IG1lc3Nh
Z2VPYmplY3QucGFyYW1zLnJlcXVlc3RJZCwgc3RhZ2U6ICJyZXNwb25zZSJ9fSksCiAgICAgICAg
ICAgICBdKTsKICAgICAgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJSZXNwb25zZSByZWNlaXZl
ZC4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3Vy
Y2VzL2RhdGEyLmpzb24gYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
ZGF0YTIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODZjYTQ5NGMxZGYzOTZiM2Q5ODIxN2MxMzhmYjcxNTg4
MWYzMmE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL2RhdGEyLmpzb24KQEAgLTAsMCArMSBAQAoraW50ZXJjZXB0ZWQgcmVxdWVzdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400510</attachid>
            <date>2020-05-28 14:57:17 -0700</date>
            <delta_ts>2020-06-03 13:34:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200528145716.patch</filename>
            <type>text/plain</type>
            <size>90573</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YTk5NDI3ZDM3MjJjZWNkZDk3YTYxMDkzNGJjODUzZGQ2MGNlNGM2Li41NWIxOTQwN2Y1YjI5MGY0
ZmM5Njc3N2Q0NmQzMzNiMGJhYzY3OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNS0xMiAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRml4IGV4aXN0aW5nIHVz
YWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlNDIGFuZCBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2YTNmNDc4MWFmNjI1ZGY1YTg4OWJiOWJhODkxYmIwZmMxN2E4NjFhLi5jNjVjNmY4M2Y0OTcw
MTViNzk3NTFhMzg1OGU1MzA2NTNiMzliMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAK
KzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAK
KyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJl
cXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZp
ZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAg
J3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVl
c3RJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3Zl
SW50ZXJjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3Bv
bnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0wNS0xMiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3N0ZXIg
c2V0IGFmdGVyIHBsYXliYWNrIGJlZ2lucyBzaG91bGQgYmUgaWdub3JlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggMzhjN2MzMDY0YmVlNzRjOGQyOTExMGRjYzA3NDA3Zjg2Yzk0YjljOS4u
MTIzYjI0ZTAxZTlhNTY4NTg2Yzc1NDY2ZmIyYzg1MTM4N2M1MDRkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDUtMTMgIFBhdmVsICA8cGF2ZWwuZmVs
ZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVl
c3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRp
b24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBi
ZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2Fu
IG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAg
ICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVycmlk
ZSk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxSZXNv
dXJjZU92ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXF1
ZXN0SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJl
c3BvbnNlSW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBl
Ll9oYW5kbGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5ldHdv
cmtPYnNlcnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKwogMjAyMC0wNS0xMSAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogTmV0d29yazogVGltaW5nOiBnYXBzIGFyb3VuZCB0aGUgIlJlc291cmNlIGRvZXMgbm90IGhh
dmUgdGltaW5nIGRhdGEiIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTVhMWZhOWFiNGI1ODk4ZjQxYzc5
Njk2Zjc3YjE0ZjYwMzA4NTliYi4uMGNkYjFiMjEzNTIxODk2ZTc3ZDU0MzdkM2FkOTFhNDA3OTg3
ZDFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1h
biAgPHBhdmVsLmZlbGRtYW5AZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGlu
dHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVl
c3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4u
IEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAor
ICAgICAgICBjYW4gYmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtT
dGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScg
dmFsdWVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6
CisKIDIwMjAtMDUtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIFJld29yayBkcmFnIGFuZCBkcm9wIGhhbmRsaW5nIGluIHByZXBh
cmF0aW9uIGZvciBHVEs0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL05ldHdvcmsuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvTmV0d29yay5qc29uCmluZGV4IDc3N2E1NDE2NmVkNjY2NDU2MWIzZjgyNDlh
NmFiYjRhYzU5ZDA0ODAuLmEwODA5OTY2ODBiNzRiZjI2Y2JmMzRjMTlhNDY2Mjc3YWU3Y2E2ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0
d29yay5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
TmV0d29yay5qc29uCkBAIC0xNTUsNyArMTU1LDEzIEBACiAgICAgICAgICAgICAiaWQiOiAiTmV0
d29ya1N0YWdlIiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRGlmZmVyZW50IHN0YWdlcyBvZiBhIG5ldHdvcmsgcmVxdWVzdC4iLAot
ICAgICAgICAgICAgImVudW0iOiBbInJlc3BvbnNlIl0KKyAgICAgICAgICAgICJlbnVtIjogWyJy
ZXF1ZXN0IiwgInJlc3BvbnNlIl0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
ImlkIjogIlJlc291cmNlRXJyb3JUeXBlIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlmZmVyZW50IHN0YWdlcyBvZiBhIG5ldHdv
cmsgcmVxdWVzdC4iLAorICAgICAgICAgICAgImVudW0iOiBbIkdlbmVyYWwiLCAiQWNjZXNzQ29u
dHJvbCIsICJDYW5jZWxsYXRpb24iLCAiVGltZW91dCJdCiAgICAgICAgIH0KICAgICBdLAogICAg
ICJjb21tYW5kcyI6IFsKQEAgLTIzOCwxMCArMjQ0LDEwIEBACiAgICAgICAgICAgICAibmFtZSI6
ICJhZGRJbnRlcmNlcHRpb24iLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFkZCBhbiBp
bnRlcmNlcHRpb24uIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVSTCBw
YXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcgaWYgbm90IHNwZWNpZmll
ZCBvciBlbXB0eSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYi
OiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGludGVyY2VwdC4iIH0s
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwgInR5cGUiOiAiYm9v
bGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBmYWxzZSwgaWdub3Jl
cyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVn
dWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwg
IiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBzdGFnZXMuIiB9Cisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFy
YW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAgICAgXQogICAgICAg
ICB9LAogICAgICAgICB7CkBAIC0yNDksMTYgKzI1NSwyOCBAQAogICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlJlbW92ZSBhbiBpbnRlcmNlcHRpb24uIiwKICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5n
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3Jr
U3RhZ2UiLCAiZGVzY3JpcHRpb24iOiAiU3RhZ2UgdG8gaW50ZXJjZXB0LiIgfSwKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImNhc2VTZW5zaXRpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBj
YXNpbmcgb2YgYHVybGAgcGFyYW1ldGVyLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJl
c3Npb24uIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJO
ZXR3b3JrU3RhZ2UiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHBy
ZXNlbnQgdGhpcyBhcHBsaWVzIHRvIGFsbCBuZXR3b3JrIHN0YWdlcy4iIH0KKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMg
YSByZWd1bGFyIGV4cHJlc3Npb24uIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAg
ICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdENvbnRpbnVlIiwKLSAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJDb250aW51ZSBhbiBpbnRlcmNlcHRpb24gd2l0aCBubyBtb2Rp
ZmljYXRpb25zLiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udGludWUgcmVxdWVz
dCBvciByZXNwb25zZSB3aXRob3V0IG1vZGlmaWNhdGlvbnMuIiwKICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYi
OiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNl
cHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9CisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVz
Y3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVz
dCBvciByZXNwb25zZSB0byBjb250aW51ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0
byBjb250aW51ZS4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlJlcGxhY2UgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRl
ZCBvbmUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjog
IklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9u
c2UgdG8gY29udGludWUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWV0aG9kIiwg
InR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCBy
ZXF1ZXN0IG1ldGhvZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlw
ZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVl
c3QgdXJsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6
ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9u
c2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIg
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRh
dGEsIGJhc2U2NC1lbmNvZGVkLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAg
ICB7CkBAIC0yNjYsMTMgKzI4NCwzNCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBy
b3ZpZGUgcmVzcG9uc2UgY29udGVudCBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVzcG9uc2UuIiwKICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVx
dWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIg
Zm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAotICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4i
LCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBlIjogInN0cmluZyIs
ICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2NEVu
Y29kZWQiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRydWUsIGlmIGNvbnRlbnQgd2FzIHNlbnQgYXMgYmFzZTY0LiIgfSwKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIm1pbWVUeXBlIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIk1JTUUgVHlwZSBmb3IgdGhlIGRhdGEuIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlLiBQYXNz
IHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0LiBQYXNzIHRo
cm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAogICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRocm91Z2ggb3Jp
Z2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgcmVzcG9uc2UgY29u
dGVudCBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVzcG9uc2UuIiwKKyAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAi
UmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRl
ZCBOZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJzdHJpbmci
LCAiZGVzY3JpcHRpb24iOiAiTUlNRSBUeXBlIGZvciB0aGUgZGF0YS4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzdGF0dXMiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9u
IjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1
ZXMgaWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNU
ZXh0IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3Rh
dHVzIHRleHQuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0s
CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIs
ICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBvcmln
aW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJv
ciIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmFpbCByZXF1ZXN0IG9yIHJlc3BvbnNl
IHdpdGggZ2l2ZW4gZXJyb3IgdHlwZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQi
LCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsg
cmVxdWVzdCB0byBmYWlsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yVHlw
ZSIsICIkcmVmIjogIlJlc291cmNlRXJyb3JUeXBlIiwgImRlc2NyaXB0aW9uIjogIkRlbGl2ZXIg
ZXJyb3IgcmVhc29uIGZvciB0aGUgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAgICAgICAgICAgXQog
ICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpAQCAtMzQ4LDkgKzM4NywxNyBAQAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNoZWRSZXNv
dXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAgICAgICAg
ICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVz
dEludGVyY2VwdGVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhU
VFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3QgcmVzcG9u
ZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+LCA8Y29kZT5OZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9jb2RlPmAgb3IgPGNvZGU+TmV0d29yay5pbnRlcmNl
cHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byByZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAorICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0
SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3Ig
dGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxpZXIgPGNv
ZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVmIjogIlJlcXVlc3QiLCAiZGVzY3JpcHRpb24iOiAi
T3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlzIGlzIGNv
bnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAg
ICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRlcmNlcHRlZCIsCi0gICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29u
dGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8L2NvZGU+
YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBUaGUgZnJv
bnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8
L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2RlPmAgdG8g
Y29udGludWUgdGhpcyByZXNwb25zZS4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQi
LCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3Jr
LiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxpZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJl
U2VudDwvY29kZT4uIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzcG9uc2UiLCAi
JHJlZiI6ICJSZXNwb25zZSIsICJkZXNjcmlwdGlvbiI6ICJPcmlnaW5hbCByZXNwb25zZSBjb250
ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlzIGlzIGNvbnRpbnVlZC4iIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggMGM0NDJlZTkwODg3N2QyMDY3ZDY1ZTg3NDQxNjUyYThjZjAwYzg4ZS4uZDEwYjMyNTUx
M2UyYWNhMDZiN2EzN2E4NTcwODZhYTEyYmFkYzY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTgxMCwxMCAr
ODEwLDE3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hl
ZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSYgY2FjCiAgICAgfQogfQogCi1ib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCi0gICAgICAgIHJldHVybiBuZXR3
b3JrQWdlbnQtPndpbGxJbnRlcmNlcHRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm4g
bmV0d29ya0FnZW50LT53aWxsSW50ZXJjZXB0KHJlcXVlc3QpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVl
c3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgcmV0
dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNCw2ICs4MzEsMTIgQEAgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0
d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkK
KyAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZSho
YW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXgg
MDNiZGQ1NWNjOTMwZGUwY2ZjNjFmOGQ5ZTQyMTBmNDk1MmFhNDYzMy4uOGNhNDIzMTRlODRlZGQx
YzkxNGQwNGU5NDNhOGYwYTY2OWM0MGQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDUsNiArNDUsNyBAQAogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25QdWJsaWMuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIldvcmtlckluc3BlY3RvclByb3h5LmgiCkBAIC0yMzIsOCArMjMzLDEwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZShQYWdlJiwg
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVy
Y2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBz
dGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMgdm9p
ZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtNDM3LDggKzQ0MCwxMCBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERl
c3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBi
b29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNw
b25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNz
YWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTEyNDksMTEgKzEyNTQsMTkgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
KENhY2hlZFJlc291cmNlJgogICAgIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKGNhY2hl
ZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEludGVyY2VwdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlm
IChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1l
KGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0SW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvblB1YmxpYzo6aGFzRnJvbnRl
bmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJl
cXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTEyNjUsNiArMTI3OCwxMyBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYgaGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KCps
b2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOworICAgIGlmIChhdXRvKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGxvYWRlci5mcmFtZSgp
KSkKKyAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGxv
YWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdC5jcHAKaW5kZXggOTU0YWFmMTIxYTlmYTUwN2Q4M2JjMTBhZTM3ZGUxZjEyOGY3ZGNm
Yy4uNDA2NjhhMWNiNjlmYjc3NDE2ZjgyNzZkOWRkZDAxOTg4ZTVkMGIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdC5jcHAKQEAgLTMwLDExICszMCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCit7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50
ZXJjZXB0UmVxdWVzdChmcmFtZSwgcmVxdWVzdCk7Cit9CisKIGJvb2wgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0
dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJh
bWUsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmIGhhbmRsZXIpCit7Cisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RG
TW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRl
cmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxl
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGI2N2U4OWI4MGI0ZTdhODU4NmNhYzgxYWRlNWQ1
OGExYmNiMGQ0MzEuLjU0M2Y1YjAzMzVjMWVkNmRkM2M3NjViYjMxZjgxMTNjMzQ3MDY3OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDE0ICszNiwyNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7
CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZElu
dGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCopPiYmKTsKICAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKIHByaXZh
dGU6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGNvbnN0
IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCop
PiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFMoZmFsc2UpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoKmZyYW1lLCByZXF1
ZXN0KTsKK30KKwogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Ojpz
aG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhm
YWxzZSk7CkBAIC01Myw2ICs2NiwxMiBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKgogICAgIHJl
dHVybiBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKCpmcmFtZSwgcmVzcG9uc2UpOwog
fQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2Vw
dFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlcXVlc3QqKT4mJiBoYW5kbGVyKQoreworICAgIEFTU0VSVChJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QobG9hZGVyLmZy
YW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwo
bG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25z
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGFmY2RkMmE3ZmFmZmUwYmVjOTgyMDcyZDg5NGJj
ODVjNmUzMGM0NGMuLjI4MzJiMzI3ODFhN2MzNGYzZmU4ZDdhMTJhN2M5MjNmYWQ4YmMzZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgpAQCAt
ODQxLDEyICs4NDIsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpc2FibGUoRXJy
b3JTdHJpbmcmKQogICAgIG1fcmVzb3VyY2VzRGF0YS0+Y2xlYXIoKTsKICAgICBtX2V4dHJhUmVx
dWVzdEhlYWRlcnMuY2xlYXIoKTsKIAorICAgIGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAg
ICAgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAKICAgICBzZXRSZXNvdXJjZUNhY2hpbmdE
aXNhYmxlZChmYWxzZSk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJ
bnRlcmNlcHQoVVJMIHVybCkKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRl
cmNlcHQoVVJMIHVybCwgTmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSkKIHsKICAgICB1cmwucmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTg1NSw2ICs4NTcsMTAgQEAgYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8mIGludGVyY2VwdCA6IG1faW50ZXJjZXB0cykgewor
ICAgICAgICBpZiAoaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSAhPSBuZXR3b3JrU3RhZ2UpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGludGVyY2VwdC51cmwuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9
IGludGVyY2VwdC5pc1JlZ2V4ID8gQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5n
VHlwZTo6UmVnZXggOiBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpF
eGFjdFN0cmluZzsKICAgICAgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6
OmNyZWF0ZVJlZ3VsYXJFeHByZXNzaW9uRm9yU2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGlu
dGVyY2VwdC5jYXNlU2Vuc2l0aXZlLCBzZWFyY2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJl
Z2V4Lm1hdGNoKHVybFN0cmluZykgIT0gLTEpCkBAIC04NjQsNiArODcwLDE2IEBAIGJvb2wgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdS
ZXF1ZXN0cygpCit7CisgICAgZm9yIChhdXRvJiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0lu
dGVyY2VwdFJlcXVlc3RzLnZhbHVlcygpKSB7CisgICAgICAgIFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIgPSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgICAgIGlmIChsb2FkZXIt
PmlkZW50aWZpZXIoKSkKKyAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5tX2NvbXBsZXRpb25I
YW5kbGVyKCZsb2FkZXItPnJlcXVlc3QoKSk7CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2Vw
dFJlcXVlc3RzLmNsZWFyKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250
aW51ZVBlbmRpbmdSZXNwb25zZXMoKQogewogICAgIGZvciAoYXV0byYgcGVuZGluZ0ludGVyY2Vw
dFJlc3BvbnNlIDogbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnZhbHVlcygpKQpAQCAtMTAy
OSw2MiArMTA0NSw2NCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2V0SW50ZXJjZXB0
aW9uRW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvbwogCiAgICAgbV9pbnRlcmNl
cHRpb25FbmFibGVkID0gZW5hYmxlZDsKIAotICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVk
KQorICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKSB7CisgICAgICAgIGNvbnRpbnVlUGVu
ZGluZ1JlcXVlc3RzKCk7CiAgICAgICAgIGNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpOworICAg
IH0KIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3Ry
aW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRk
SW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBvcHRpb25hbENh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKIHsKLSAgICBpZiAobmV0
d29ya1N0YWdlU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm5ldHdvcmtTdGFnZVN0
cmluZyk7Ci0gICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7Ci0gICAgICAgICAgICBlcnJvclN0
cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpuZXR3b3JrU3Rh
Z2VTdHJpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCiAgICAg
SW50ZXJjZXB0IGludGVyY2VwdDsKICAgICBpbnRlcmNlcHQudXJsID0gdXJsOwogICAgIGlmIChv
cHRpb25hbENhc2VTZW5zaXRpdmUpCiAgICAgICAgIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0g
Km9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0aW9uYWxJc1JlZ2V4KQogICAgICAg
ICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElzUmVnZXg7Ci0KLSAgICAvLyBGSVhNRTog
U3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3b3Jr
U3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0YWdl
U3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnRlcmNlcHQubmV0d29ya1N0
YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5hcHBl
bmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVy
Y2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVhZHkgZXhpc3RzIl9zOwog
fQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJp
bmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1v
dmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChu
ZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdl
U3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtT
dGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KICAg
ICBJbnRlcmNlcHQgaW50ZXJjZXB0OwogICAgIGludGVyY2VwdC51cmwgPSB1cmw7CiAgICAgaWYg
KG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSkKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUg
PSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgpCiAgICAg
ICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8vIEZJWE1F
OiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdv
cmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3Rh
Z2VTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludGVyY2VwdC5uZXR3b3Jr
U3RhZ2UgPSBuZXR3b3JrU3RhZ2UudmFsdWUoKTsKIAogICAgIGlmICghbV9pbnRlcmNlcHRzLnJl
bW92ZUFsbChpbnRlcmNlcHQpKQogICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIGludGVy
Y2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4Il9zOwogfQogCi1ib29sIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghbV9pbnRlcmNlcHRp
b25FbmFibGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50
ZXJjZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCkgfHwgc2hvdWxkSW50
ZXJjZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UpOworfQorCitib29s
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVx
dWVzdC51cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBO
ZXR3b3JrU3RhZ2U6OlJlcXVlc3QpOwogfQogCiBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CkBAIC0xMDkyLDcgKzExMTAsMjEgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAo
IW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0
dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZElu
dGVyY2VwdChyZXNwb25zZS51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVy
JiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+
JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9lbmFibGVkKTsKKyAgICBBU1NFUlQobV9pbnRl
cmNlcHRpb25FbmFibGVkKTsKKworICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0Zh
Y3Rvcnk6OnJlcXVlc3RJZChsb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICBpZiAobV9wZW5kaW5n
SW50ZXJjZXB0UmVxdWVzdHMuY29udGFpbnMocmVxdWVzdElkKSkgeworICAgICAgICBoYW5kbGVy
KCZsb2FkZXIucmVxdWVzdCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3BlbmRp
bmdJbnRlcmNlcHRSZXF1ZXN0cy5zZXQocmVxdWVzdElkLCBtYWtlVW5pcXVlPFBlbmRpbmdJbnRl
cmNlcHRSZXF1ZXN0PigmbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKSk7CisgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9y
UmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQpAQCAtMTExMiwxOCArMTE0NCw3MiBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCiAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlSW50ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9i
amVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIG51bGxwdHIpKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcpCiB7Cisg
ICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlPihuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0d29ya1N0
YWdlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3Jr
U3RhZ2U6ICJfcywgbmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChuZXR3b3JrU3RhZ2UudmFsdWUoKSA9PSBOZXR3b3JrU3RhZ2U6OlJlcXVlc3Qp
IHsKKyAgICAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCA9IG1fcGVuZGluZ0ludGVy
Y2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAgICAgICAgaWYgKHBlbmRpbmdJbnRlcmNl
cHRSZXF1ZXN0KSB7CisgICAgICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdC0+bV9jb21w
bGV0aW9uSGFuZGxlcigmcGVuZGluZ0ludGVyY2VwdFJlcXVlc3QtPm1fbG9hZGVyLT5yZXF1ZXN0
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0
UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwot
ICAgIGlmICghcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJ
ZCJfczsKKyAgICBpZiAocGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7CisgICAgICAgIHBlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGlu
dGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworfQorCit2b2lkIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlcXVlc3QoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nKiBtZXRob2QsIGNv
bnN0IFN0cmluZyogdXJsLCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyogcG9zdERhdGEpCit7CisgICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVy
Y2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAgICBpZiAocGVuZGluZ1JlcXVlc3QpIHsK
KyAgICAgICAgUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRl
ci5nZXQoKTsKKyAgICAgICAgaWYgKCFsb2FkZXItPmlkZW50aWZpZXIoKSkgeworICAgICAgICAg
ICAgLy8gRG8gbm90IHRocm93IHVwb24gY29udGludWUgb2YgY2FuY2VsZWQgcmVxdWVzdHMuCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gU2FmZSB0byBjb25zdCBj
YXN0IGF0IHRoaXMgcG9pbnQsIHdlIGFyZSBvbmx5IGFkanVzdGluZyB0aGUgbWV0aG9kIC8gaGVh
ZGVycyAvIHBvc3QuCisgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbG9hZGVyLT5y
ZXF1ZXN0KCk7CisgICAgICAgIGlmICh1cmwpCisgICAgICAgICAgICByZXF1ZXN0LnNldFVSTChV
UkwoeyB9LCAqdXJsKSk7CisgICAgICAgIGlmIChtZXRob2QpCisgICAgICAgICAgICByZXF1ZXN0
LnNldEhUVFBNZXRob2QoKm1ldGhvZCk7CisgICAgICAgIGlmIChoZWFkZXJzKSB7CisgICAgICAg
ICAgICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0SGVhZGVyczsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgW2tleSwgdmFsdWVdIDogKmhlYWRlcnMpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaGVh
ZGVyVmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1
ZSkpCisgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0SGVhZGVycy5hZGQoa2V5LCBoZWFkZXJW
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJG
aWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
cG9zdERhdGEpIHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgICAg
ICAgICBpZiAoIWJhc2U2NERlY29kZSgqcG9zdERhdGEsIGJ1ZmZlcikpIHsKKyAgICAgICAgICAg
ICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZGVjb2RlIGdpdmVuIHBvc3REYXRhIl9zOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0ZShidWZmZXIpKTsKKyAgICAgICAgfQorICAg
ICAgICBwZW5kaW5nUmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxlcigmcmVxdWVzdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3Bv
bmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVu
ZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwogfQogCi12b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29u
dGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcqIG1pbWVUeXBlLCBjb25zdCBp
bnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3Qq
IGhlYWRlcnMpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3Bv
bnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyogY29udGVudCwgY29uc3QgYm9vbCogYmFzZTY0RW5jb2RlZCwgY29uc3QgU3Ry
aW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVzVGV4
dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQogewogICAgIGF1dG8gcGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRha2UocmVxdWVzdElk
KTsKICAgICBpZiAoIXBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSkgewpAQCAtMTE1MiwyMCArMTIz
OCwxMDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25z
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICB9CiAKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBvdmVycmlkZURhdGE7Ci0gICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKKyAgICBp
ZiAoYmFzZTY0RW5jb2RlZCAmJiAqYmFzZTY0RW5jb2RlZCAmJiBjb250ZW50KSB7CiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRl
bnQsIGJ1ZmZlcikpIHsKKyAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKmNvbnRlbnQsIGJ1ZmZl
cikpIHsKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4g
Y29udGVudCJfczsKICAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9u
ZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZm
ZXIpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5ndGgoKSk7Cisg
ICAgfSBlbHNlIGlmIChjb250ZW50KQorICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShjb250ZW50LT51dGY4KCkuZGF0YSgpLCBjb250ZW50LT51dGY4KCkubGVuZ3Ro
KCkpOwogCiAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kKG92ZXJyaWRlUmVz
cG9uc2UsIG92ZXJyaWRlRGF0YSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpp
bnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uc3QgYm9vbCog
YmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgaW50IHN0YXR1cywgY29uc3Qg
U3RyaW5nJiBzdGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QmIGhlYWRlcnMpCit7CisgICAg
YXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVx
dWVzdElkKTsKKyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJ
ZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRl
cj4gbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgIGlmICghbG9h
ZGVyLT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGZ1
bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQiX3M7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBpZiAo
YmFzZTY0RW5jb2RlZCAmJiAqYmFzZTY0RW5jb2RlZCkgeworICAgICAgICBWZWN0b3I8dWludDhf
dD4gYnVmZmVyOworICAgICAgICBpZiAoIWJhc2U2NERlY29kZShjb250ZW50LCBidWZmZXIpKSB7
CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZGVjb2RlIGdpdmVuIGNvbnRl
bnQiX3M7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSBlbHNlCisgICAgICAg
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LnV0ZjgoKS5kYXRhKCksIGNvbnRl
bnQudXRmOCgpLmxlbmd0aCgpKTsKKworICAgIC8vIE1pbWljIGRhdGEgVVJMIGxvYWQgYmVoYXZp
b3IgLSByZXBvcnQgZGlkUmVjZWl2ZVJlc3BvbnNlICYgZGlkRmluaXNoTG9hZGluZy4KKyAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci0+dXJsKCks
IG1pbWVUeXBlLCBkYXRhLT5zaXplKCksIFN0cmluZygpKTsKKyAgICByZXNwb25zZS5zZXRTb3Vy
Y2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpJbnNwZWN0b3JPdmVycmlkZSk7CisgICAgcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsKKyAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzVGV4dChzdGF0dXNUZXh0KTsKKyAgICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0SGVhZGVyczsK
KyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpIHsKKyAgICAgICAgU3RyaW5nIGhlYWRl
clZhbHVlOworICAgICAgICBpZiAoaGVhZGVyLnZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkp
CisgICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRkKGhlYWRlci5rZXksIGhlYWRlclZhbHVl
KTsKKyAgICB9CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxp
Y2l0SGVhZGVycykpOworICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOworICAgIGxvYWRlci0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRhLnJlbGVhc2VO
b25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChidWZmZXItPnNpemUoKSkKKyAgICAg
ICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+
c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICBsb2FkZXItPmRpZEZp
bmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgIH0pOworICAgIHBlbmRpbmdS
ZXF1ZXN0LT5tX2NvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworfQorCit2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvcihFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlw
ZVN0cmluZykKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0
UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlmICghcGVuZGluZ1JlcXVlc3QpIHsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBm
b3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVz
b3VyY2VMb2FkZXIqIGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAg
ICBpZiAoIWxvYWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVu
YWJsZSB0byBhYm9ydCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZXJyb3JUeXBlID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlPihlcnJvclR5cGVT
dHJpbmcpOworICAgIGlmICghZXJyb3JUeXBlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVu
a25vd24gZXJyb3IgdHlwZSJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CisgICAgc3dpdGNoIChlcnJvclR5cGUudmFsdWUoKSkgeworICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkdlbmVy
YWw6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCBsb2FkZXItPnVybCgpLCAiUmVxdWVzdCBpbnRlcmNlcHRlZCJfcywgUmVzb3VyY2VF
cnJvcjo6VHlwZTo6R2VuZXJhbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkFjY2Vzc0NvbnRyb2w6Cisg
ICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAw
LCBsb2FkZXItPnVybCgpLCAiQWNjZXNzIGRlbmllZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
QWNjZXNzQ29udHJvbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkNhbmNlbGxhdGlvbjoKKyAgICAgICAg
ZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRl
ci0+dXJsKCksICJSZXF1ZXN0IGNhbmNlbGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5j
ZWxsYXRpb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0OgorICAgICAgICBlcnJvciA9IFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwoKSwg
IlJlcXVlc3QgdGltZWQgb3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKKyAg
ICBwZW5kaW5nUmVxdWVzdC0+bV9jb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKK30KKwogYm9v
bCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiB7CiAgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJ0ZXh0LyIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBiZmQxMzFlOWI1ODU2Yzg0
ZGE3NzI0ODA1ZTcxMzk3YjdjNzQ4NmE5Li40NDU0Yjc2ZWNmZmI2YTViMzNlNmI1ZjM2YjI4MzZj
M2E3NjJjZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTg4LDEwICs4OCwxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBzZXJpYWxpemVkQ2VydGlmaWNhdGUpIGZpbmFsOwogICAg
IHZvaWQgcmVzb2x2ZVdlYlNvY2tldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIGZpbmFsOwogICAgIHZvaWQgc2V0SW50ZXJjZXB0
aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgZmluYWw7Ci0gICAgdm9pZCBh
ZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9v
bCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3
b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNv
bnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5h
bDsKLSAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQpIGZpbmFsOwotICAgIHZvaWQgaW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwg
Ym9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcqIG1pbWVUeXBlLCBjb25zdCBpbnQqIHN0
YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRl
cnMpIGZpbmFsOworICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29s
KiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4KSBmaW5hbDsKKyAgICB2b2lkIHJl
bW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29u
c3QgYm9vbCogaXNSZWdleCkgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRDb250aW51ZShFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtT
dGFnZVN0cmluZykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVxdWVzdChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG1ldGhvZCwgY29u
c3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5n
KiBwb3N0RGF0YSkgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nKiBjb250ZW50LCBj
b25zdCBib29sKiBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcqIG1pbWVUeXBlLCBjb25zdCBp
bnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3Qq
IGhlYWRlcnMpIGZpbmFsOworICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGNvbnN0IGJvb2wqIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGlu
dCBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0JiBo
ZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUp
IGZpbmFsOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCB3aWxs
UmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAtMTE4LDkgKzEyMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBtYWluRnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXImKTsKICAgICB2b2lkIHNldEluaXRp
YWxTY3JpcHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VTdHJpbmcpOwogICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9j
dW1lbnQmKTsKLSAgICBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOworICAgIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
KyAgICBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQgaW50
ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Kik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3Rz
KGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwogICAgIHZvaWQg
c2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJj
aE1hdGNoPj4mKTsKQEAgLTE0MCw3ICsxNDUsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Us
IEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKIAotICAgIGJvb2wgc2hvdWxkSW50
ZXJjZXB0KFVSTCk7CisgICAgdXNpbmcgTmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6TmV0d29yazo6TmV0d29ya1N0YWdlOworICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCwg
TmV0d29ya1N0YWdlKTsKKyAgICB2b2lkIGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAg
dm9pZCBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsKIAogICAgIFdlYlNvY2tldCogd2ViU29j
a2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKQEAgLTE1Myw2ICsxNjAs
MjAgQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAorICAgIGNsYXNzIFBl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3QpOworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBwdWJsaWM6CisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9h
ZGVyKiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICA6IG1fbG9hZGVyKGxvYWRlcikK
KyAgICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QoKSA9
IGRlZmF1bHQ7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CisgICAg
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Kik+IG1fY29t
cGxldGlvbkhhbmRsZXI7CisgICAgfTsKKwogICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRSZXNw
b25zZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXNw
b25zZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMjA0LDE1ICsyMjUs
MTggQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgYm9vbCBjYXNlU2Vu
c2l0aXZlIHsgdHJ1ZSB9OwogICAgICAgICBib29sIGlzUmVnZXggeyBmYWxzZSB9OworICAgICAg
ICBOZXR3b3JrU3RhZ2UgbmV0d29ya1N0YWdlIHsgTmV0d29ya1N0YWdlOjpSZXNwb25zZSB9Owog
CiAgICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZXJjZXB0JiBvdGhlcikg
Y29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHVybCA9PSBvdGhlci51cmwKICAg
ICAgICAgICAgICAgICAmJiBjYXNlU2Vuc2l0aXZlID09IG90aGVyLmNhc2VTZW5zaXRpdmUKLSAg
ICAgICAgICAgICAgICAmJiBpc1JlZ2V4ID09IG90aGVyLmlzUmVnZXg7CisgICAgICAgICAgICAg
ICAgJiYgaXNSZWdleCA9PSBvdGhlci5pc1JlZ2V4CisgICAgICAgICAgICAgICAgJiYgbmV0d29y
a1N0YWdlID09IG90aGVyLm5ldHdvcmtTdGFnZTsKICAgICAgICAgfQogICAgIH07CiAgICAgVmVj
dG9yPEludGVyY2VwdD4gbV9pbnRlcmNlcHRzOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVu
aXF1ZV9wdHI8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1
ZXN0czsKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZT4+IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlczsKIAogICAgIC8vIEZJWE1F
OiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQgc2hvdWxkIG5vdCBiZSBhd2FyZSBvZiBzdHlsZSByZWNh
bGN1bGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjMxZWRlYzhjY2M3MWQ2NTIxNzEwNjM2M2Y1Y2MzNDk5
MGExNjQ3ZS4uNjU5ZTJmZTg5MDdiMzE1OTc2NjBhN2RkYzQ4Yjk0NWQzM2YwZjVlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC04NDYsNyArODQ2LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKIAogICAgIHJl
cXVlc3QudXBkYXRlUmVmZXJyZXJQb2xpY3koZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPnJlZmVy
cmVyUG9saWN5KCkgOiBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3duZ3JhZGUpOwog
Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3Qo
JmZyYW1lLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKSkpCiAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5OjpE
aXNhbGxvd0NhY2hpbmcpOwogCiAgICAgYXV0byYgcGFnZSA9ICpmcmFtZS5wYWdlKCk7CkBAIC0x
NDM2LDcgKzE0MzYsNyBAQCBWZWN0b3I8UmVmPFNWR0ltYWdlPj4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmFsbENhY2hlZFNWR0ltYWdlcygpIGNvbnN0CiAKIFJlc291cmNlRXJyb3JPcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVs
b2FkKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCiB7Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2Vw
dFJlcXVlc3QoZnJhbWUoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgaWYgKElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChmcmFtZSgpLCByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNl
RXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpLnVybCgpLCAiSW5zcGVjdG9yIGludGVyY2VwdCJfcyB9KTsKIAogICAgIGlmIChyZXF1
ZXN0LmNoYXJzZXQoKS5pc0VtcHR5KCkgJiYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6
OlNjcmlwdCB8fCB0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL05ldHdvcmtNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMKaW5kZXggMWM4MTI2MGQ4ZGIyMzQ4YzAw
YmZlZDk1YjdiYzcwMjAxNTAwYzVkZS4uZTAyOGQ4OTY0MTBiYjM4YjkxM2ZjYzJhOWM1YzA0NTc3
MTk1MDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMKQEAgLTE2MSw3ICsx
NjEsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNl
T3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6
IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXNSZWdleDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya1N0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVu
dW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5S
ZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMzY0LDcgKzM2NCw3IEBAIFdJLk5ldHdvcmtNYW5h
Z2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAg
ICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2Fz
ZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAg
ICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAg
ICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5l
dHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFj
a2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsK
IAogICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLmFkZElu
dGVyY2VwdGlvbiBkaWQgbm90IGV4aXN0LgpAQCAtMzk3LDcgKzM5Nyw3IEBAIFdJLk5ldHdvcmtN
YW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
ICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAg
Y2FzZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAg
ICAgICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAg
ICAgICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3Jr
Lk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9y
QmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAg
fTsKIAogICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLnJl
bW92ZUludGVyY2VwdGlvbiBkaWQgbm90IGV4aXN0LgpAQCAtOTA2LDEyICs5MDYsMTcgQEAgV0ku
TmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmRlbGV0ZShyZXF1ZXN0
SWRlbnRpZmllcik7CiAgICAgfQogCisgICAgcmVxdWVzdEludGVyY2VwdGVkKHRhcmdldCwgcmVx
dWVzdElkLCByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCB7dGFyZ2V0
LCByZXF1ZXN0SWQsIHJlcXVlc3R9KTsKKyAgICB9CisKICAgICByZXNwb25zZUludGVyY2VwdGVk
KHRhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSkKICAgICB7CiAgICAgICAgIGxldCB1cmwgPSBX
SS51cmxXaXRob3V0RnJhZ21lbnQocmVzcG9uc2UudXJsKTsKICAgICAgICAgbGV0IGxvY2FsUmVz
b3VyY2VPdmVycmlkZSA9IHRoaXMubG9jYWxSZXNvdXJjZU92ZXJyaWRlRm9yVVJMKHVybCk7CiAg
ICAgICAgIGlmICghbG9jYWxSZXNvdXJjZU92ZXJyaWRlIHx8IGxvY2FsUmVzb3VyY2VPdmVycmlk
ZS5kaXNhYmxlZCkgewotICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRD
b250aW51ZShyZXF1ZXN0SWQpOworICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRl
cmNlcHRDb250aW51ZShyZXF1ZXN0SWQsIEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5l
dHdvcmtTdGFnZS5SZXNwb25zZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMTM3Nyw3ICsxMzgyLDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNlT3Zl
cnJpZGUudXJsLAogICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJy
aWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VP
dmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgbmV0d29ya1N0YWdlOiBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAgICBzdGFn
ZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAog
ICAgICAgICB9OwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogTmV0d29y
ay5hZGRJbnRlcmNlcHRpb24gLyBOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlvbiBkaWQgbm90IGV4
aXN0LgpAQCAtMTQzMyw0ICsxNDM4LDUgQEAgV0kuTmV0d29ya01hbmFnZXIuRXZlbnQgPSB7CiAg
ICAgQm9vdHN0cmFwU2NyaXB0RGVzdHJveWVkOiAibmV0d29yay1tYW5hZ2VyLWJvb3RzdHJhcC1z
Y3JpcHQtZGVzdHJveWVkIiwKICAgICBMb2NhbFJlc291cmNlT3ZlcnJpZGVBZGRlZDogIm5ldHdv
cmstbWFuYWdlci1sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1hZGRlZCIsCiAgICAgTG9jYWxSZXNv
dXJjZU92ZXJyaWRlUmVtb3ZlZDogIm5ldHdvcmstbWFuYWdlci1sb2NhbC1yZXNvdXJjZS1vdmVy
cmlkZS1yZW1vdmVkIiwKKyAgICBSZXF1ZXN0SW50ZXJjZXB0ZWQ6ICJuZXR3b3JrLW1hbmFnZXIt
cmVxdWVzdC1pbnRlcmNlcHRlZCIKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKaW5k
ZXggNTljMjljOWEzODRiMDQ3OGRkOGQ2ZDBjZjU5MjhiNjI5ODE4MDBhYS4uZmU4ODI5YTcxYmZk
MGVlZDg1NmI0MWMzYWFlY2U2YWU3ZjFhMTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZl
ci5qcwpAQCAtMTA4LDYgKzEwOCwxMSBAQCBXSS5OZXR3b3JrT2JzZXJ2ZXIgPSBjbGFzcyBOZXR3
b3JrT2JzZXJ2ZXIgZXh0ZW5kcyBJbnNwZWN0b3JCYWNrZW5kLkRpc3BhdGNoZXIKICAgICAgICAg
Ly8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KICAgICB9CiAKKyAgICByZXF1ZXN0SW50ZXJjZXB0
ZWQocmVxdWVzdElkLCByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgV0kubmV0d29ya01hbmFnZXIu
cmVxdWVzdEludGVyY2VwdGVkKHRoaXMuX3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0KTsKKyAg
ICB9CisKICAgICByZXNwb25zZUludGVyY2VwdGVkKHJlcXVlc3RJZCwgcmVzcG9uc2UpCiAgICAg
ewogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNwb25zZUludGVyY2VwdGVkKHRoaXMuX3Rh
cmdldCwgcmVxdWVzdElkLCByZXNwb25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYjhkY2NhZDJjMmNm
OGQwMDAxNDAwNDA3Y2FjYTZlMjdiMWY4ODI0OS4uNDJmM2I0Mjg5NDIzNDlmYmFiZTgxZDMxYTY1
YmJmZjk3MTZiMDhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2Fk
SW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgpA
QCAtMjMwLDggKzIzMSwxNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQo
UmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAgaWYgKCF0
cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1Bh
cmFtZXRlcnMpKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdv
cmtQcm9jZXNzIik7Ci0gICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNv
dXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMs
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJp
bmdUaW1lKHJlc291cmNlKSk7Ci0gICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAocmVzb3Vy
Y2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHx8
ICFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3Qo
cmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpKSkgeworICAg
ICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCBy
ZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3Vy
Y2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChyZXNvdXJjZUxvYWRlciwg
W3RoaXMsIHByb3RlY3RlZFJlc291cmNlTG9hZGVyID0gbWFrZVJlZlB0cigmcmVzb3VyY2VMb2Fk
ZXIpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIHJlc291cmNlXShjb25zdCBSZXNvdXJjZVJlcXVlc3QqIHJlcXVlc3QpIG11dGFi
bGUgeworICAgICAgICAgICAgaWYgKHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2NoZWR1bGVM
b2FkRnJvbU5ldHdvcmtQcm9jZXNzKCpwcm90ZWN0ZWRSZXNvdXJjZUxvYWRlciwgKnJlcXVlc3Qs
IHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRs
ZXJzIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMTc4OGE0NWI3NzNkMDI3MjZlNGJhZjRjZjBlODRjN2Q5NjdhNDAwYi4u
ZmFjNjMyZTE0NDVlZGNhODc3OWMwNTUxY2RiODM5MTNkMWRmZDU3ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM2IEBACisyMDIwLTA1LTI4ICBQYXZlbCAgPHBhdmVsLmZlbGRtYW5AZ21haWwuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrCisg
ICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1
ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBiZSBjb250aW51ZWQsIG1vZGlmaWVk
IG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2FuIG5vdyBoYXZlCisgICAgICAgICdy
ZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNv
dXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3Bl
cnRpZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3Vi
cmVzb3VyY2Utd2l0aC1lcnJvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0
aC1lcnJvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJy
aWRlbi1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanM6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10
ZXN0LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwt
cmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YTIuanNvbjogQWRkZWQuCisKIDIwMjAtMDUtMTIg
IEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dp
bkNhaXJvXVtXSzFdIHJlcXVlc3RBbmltYXRpb25GcmFtZSBkb2Vzbid0IHdvcmsgc2luY2UgcjI0
NDE4MiBpbiBBY2NlbGVyYXRlZCBDb21wb3NpdGluZyBtb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4t
cmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MjEyNTkwNDgzNWVmMTBiNmMwNjAzNGY2MTVmM2RlZjExOGY5ZWFjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
K0FMRVJUOiBPUklHSU5BTCBIVE1MIENPTlRFTlQKK0FMRVJUOiBSRVBMQUNFRCBIVE1MIENPTlRF
TlQKK092ZXJyaWRkZW4gcGFnZSBjb250ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Ut
d2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25z
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIxMjU5MDQ4MzVlZjEwYjZjMDYwMzRmNjE1ZjNk
ZWYxMThmOWVhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3Bv
bnNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK0FMRVJUOiBPUklHSU5BTCBIVE1MIENP
TlRFTlQKK0FMRVJUOiBSRVBMQUNFRCBIVE1MIENPTlRFTlQKK092ZXJyaWRkZW4gcGFnZSBjb250
ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1t
YWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZGNhZjE3NzNiZGNm
YjgzYzdjYWM4NmRhMzA4NGI1Mjg5M2M1ZDM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJl
c291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5j
U3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdCIpOworCisgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJj
ZSB3aXRoIHJlc3BvbnNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJNYWluIHJlc291cmNlIHVz
ZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gb24gbmV4dCBwYWdlIGxvYWQgYW5kIGZ1bGZpbGxzIHJl
cXVlc3QiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRhcmdldCA9
IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdv
cmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
bWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwiLAorICAgICAgICAgICAgICAgIHN0YWdl
OiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlc3BvbnNlID0g
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVx
dWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQu
aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5pbnZva2UoeworICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9odG1sIiwK
KyAgICAgICAgICAgICAgICAgICAgY29udGVudDogYDwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFk
PjxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvYCtgc2NyaXB0
PjwvaGVhZD48Ym9keT48cD5PdmVycmlkZGVuIHBhZ2UgY29udGVudDwvcD48c2NyaXB0PmFsZXJ0
KCJSRVBMQUNFRCBIVE1MIENPTlRFTlQiKTsgVGVzdFBhZ2UuY29tcGxldGVUZXN0KCk7PC9gK2Bz
Y3JpcHQ+PC9ib2R5PjwvaHRtbD5gLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwK
KyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAg
ICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdpdGhSZXNwb25zZSk7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNl
LCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9u
IGludGVyY2VwdGluZyB0aGUgbWFpbiByZXNvdXJjZSBsb2FkIHdpdGggcmVzcG9uc2UuPC9wPgor
PHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRNTCBDT05URU5UIik7PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNv
dXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzMDcxMmFlMTdhYWRiNTMzMjE0MWIzNWMzYzNkMzIzOGMx
YThiMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbApAQCAtMCwwICsx
LDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdCIpOwor
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiTWFpbiByZXNv
dXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9uIG5leHQgcGFnZSBsb2FkIiwKKyAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01h
aW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50
ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Uu
aHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3
b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IGxldCBpbnRlcmNlcHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAg
IGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAg
ICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmludm9rZSh7
CisgICAgICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRt
bCIsCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZAorICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNl
cHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7
aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJl
cXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgbWFpbiByZXNvdXJjZSBsb2FkLjwv
cD4KKzxzY3JpcHQ+YWxlcnQoIk9SSUdJTkFMIEhUTUwgQ09OVEVOVCIpOzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
cHJvcGVydGllcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE0MTU2OGE4YzQxNTFiMzExNmUz
MTIyMzY3N2QyNTc2MDdlNDQwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBhbHRl
cmluZyByZXF1ZXN0IHByb3BlcnRpZXMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3QKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVy
Y2VwdFJlcXVlc3QuTWV0aG9kCitNZXRob2Q9UE9TVAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LkhlYWRlcnMKK092ZXJyaWRlbiBoZWFkZXI6b3ZlcnJp
ZGVuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuUG9z
dERhdGEKK092ZXJyaWRlbiB2YWx1ZTogb3ZlcnJpZGVuCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVy
dGllcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY1NDU4NzUzYzRhZmMw
ZDhjY2QwN2U0ZjkwMDlmY2E4MzgzOWYzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGll
cy5odG1sCkBAIC0wLDAgKzEsMTIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiBmZXRjaERh
dGEodXJsKQoreworICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCk7CisgICAgcmV0
dXJuIGF3YWl0IHJlc3BvbnNlLnRleHQoKTsKK30KKworYXN5bmMgZnVuY3Rpb24gcG9zdERhdGEo
dXJsKQoreworICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgeworICAgICAgICBt
ZXRob2Q6ICJQT1NUIiwKKyAgICAgICAgaGVhZGVyczogeworICAgICAgICAgICAgIkNvbnRlbnQt
VHlwZSI6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiCisgICAgICAgIH0sCisg
ICAgICAgIGJvZHk6ICJ2YWx1ZT1vcmlnaW5hbCIKKyAgICB9KTsKKyAgICByZXR1cm4gYXdhaXQg
cmVzcG9uc2UudGV4dCgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUg
PSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVx
dWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAg
IGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAg
ICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bWV0aG9kIiwKKyAgICAgICAgICAgICAgICBz
dGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3Qs
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGludGVyY2VwdFdpdGhSZXF1ZXN0
ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwg
cmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIGlmICghcmVxdWVzdC51cmwu
aW5jbHVkZXMoJz9tZXRob2QnKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tl
KHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBt
ZXRob2Q6ICJQT1NUIiwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5h
Z2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisg
ICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVudGltZUFnZW50LmV2YWx1
YXRlKCJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bWV0aG9kJykiKTsK
KyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5hd2FpdFBy
b21pc2UocmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsKKyAgICAgICAgICAgIGxldCBk
YXRhID0gZXZhbCgnKCcgKyByZXNwb25zZS5yZXN1bHQudmFsdWUgKyAnKScpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIk1ldGhvZD0iICsgZGF0YS5tZXRob2QpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3QuSGVhZGVycyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVz
dHMgcmVxdWVzdCBoZWFkZXJzIGludGVyY2VwdGlvbiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7
CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAg
ICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2Uo
eworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP2hlYWRlcnMiLAorICAgICAgICAg
ICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2Uu
UmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0
aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVx
dWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgaWYgKCFyZXF1
ZXN0LnVybC5pbmNsdWRlcygnP2hlYWRlcnMnKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVl
c3QuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAg
ICAgICAgICBoZWFkZXJzOiB7ICJ2YWx1ZSI6ICJvdmVycmlkZW4iIH0sCisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQs
IGludGVyY2VwdFdpdGhSZXF1ZXN0KTsKKworICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdh
aXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50
ZXJjZXB0LWVjaG8ucGhwP2hlYWRlcnMnKSIpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2Fp
dCB0YXJnZXQuUnVudGltZUFnZW50LmF3YWl0UHJvbWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0
SWQsIHRydWUpOworICAgICAgICAgICAgbGV0IGRhdGEgPSBldmFsKCcoJyArIHJlc3BvbnNlLnJl
c3VsdC52YWx1ZSArICcpJyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiT3ZlcnJp
ZGVuIGhlYWRlcjoiICsgZGF0YS5oZWFkZXJzLnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0LlBvc3REYXRhIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0
IHBvc3QgZGF0YSBpbnRlcmNlcHRpb24iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAg
ICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICAgICAg
YXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAg
ICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9wb3N0RGF0YSIsCisgICAgICAgICAgICAgICAg
c3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0
LAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVxdWVz
dCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQs
IHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcXVlc3QudXJs
LmluY2x1ZGVzKCc/cG9zdERhdGEnKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52
b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAg
ICBtZXRob2Q6ICJQT1NUIiwKKyAgICAgICAgICAgICAgICAgICAgcG9zdERhdGE6IGJ0b2EoInZh
bHVlPW92ZXJyaWRlbiIpLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01h
bmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisK
KyAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuZXZh
bHVhdGUoInBvc3REYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP3Bvc3REYXRhJyki
KTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5hd2Fp
dFByb21pc2UocmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsKKyAgICAgICAgICAgIGxl
dCBkYXRhID0gZXZhbCgnKCcgKyByZXNwb25zZS5yZXN1bHQudmFsdWUgKyAnKScpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIk92ZXJyaWRlbiB2YWx1ZTogIiArIGRhdGEucG9zdC52
YWx1ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGFsdGVyaW5nIHJlcXVlc3QgcHJvcGVydGll
cy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNWY0ZTA3
ZWZiNjI2YTNmYTNmY2U5NTZkM2M1MTFmOTgwMjNhYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0FMRVJUOiBERUZBVUxUIG92
ZXJyaWRlLmpzIFRFWFQKK0FMRVJUOiBPVkVSUklERU4gb3ZlcnJpZGUuanMgVEVYVAorVGVzdCBy
ZXF1ZXN0IGludGVyY2VwdGlvbiBpbnRlcmNlcHRpbmcgdGhlIHN1YnJlc291cmNlIGxvYWQuCisK
KworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2UKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3Vi
cmVzb3VyY2Utd2l0aC1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI1NmE4MzhmODQx
YmM1YjQzNDA3ZjY2NDdhYWUwNjIzNWE1NDA0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVz
b3VyY2Utd2l0aC1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitBTEVSVDogREVG
QVVMVCBvdmVycmlkZS5qcyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggZXJy
b3IgZm9yIHRoZSBzdWJyZXNvdXJjZSBsb2FkLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTog
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggZXJyb3IKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1z
dWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3IuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41OThjY2NhNGU0MzM5OGI1YTNmODM4YTAzMTZlYTFiYjNkYzIyMGZmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwKQEAgLTAsMCAr
MSw0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5z
cGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QiKTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIGVycm9yIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggZXJyb3IiLAorICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5n
TWFpblRhcmdldCgpOworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJ
bnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLmpzIiwKKyAgICAg
ICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0
YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKyAgICAKKyAgICAgICAgICAgIGxldCBpbnRl
cmNlcHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFy
Z2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0
YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IuaW52b2tlKHsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBlcnJvclR5
cGU6ICJHZW5lcmFsIiwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5h
Z2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisg
ICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBm
YWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2Vw
dGlvbiB3aXRoIGVycm9yIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxM2FlODI2
NWVhNDkyNWVjOTVlYmNlYzhhYTFmN2VmZjUzZDc1OGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxF
UlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURERU4gb3ZlcnJpZGUu
anMgVEVYVAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlIGZvciB0aGUg
c3VicmVzb3VyY2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50
ZXJjZXB0UmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5TdWJyZXNvdXJjZSB3aXRoIHJlc3BvbnNlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGQ2NDc1ZjMwMzFmNDljNTY1MzA0NjJmMTUxNTk1NjllZTRmOGJjYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAg
KzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IElu
c3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVy
Y2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCByZXNwb25zZSIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNl
IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICBJbnNwZWN0b3JUZXN0LmRlYnVn
KCk7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7Cisg
ICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZv
a2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUuanMiLAorICAgICAgICAgICAgICAgIHN0YWdl
OiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1
ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2phdmFzY3Jp
cHQiLAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgYWxlcnQoIk9WRVJSSURERU4gb3Zl
cnJpZGUuanMgVEVYVCIpOyBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJp
ZGVDb250ZW50RGlkTG9hZCIpO2AsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAwLAor
ICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgICAgICAg
ICBoZWFkZXJzOiB7fSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5h
Z2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisg
ICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBm
YWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAgICAgICAgICAgYXdhaXQg
SW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJPdmVycmlkZUNvbnRlbnREaWRMb2FkIik7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJl
cXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UgZm9yIHRoZSBzdWJyZXNvdXJjZSBsb2Fk
LjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNv
dXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNDdkOTc3MGVlYTgwY2Y1ZjNhNTgyZTViZjA2ZWIyZmIw
MDhkZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0bWwKQEAgLTAsMCArMSw0
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QiKTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdC5TdWJyZXNvdXJjZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2Ug
dXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisJCQkJ
CSAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpCisJCQkJCQlhd2FpdCB0YXJn
ZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworCQkJCQkJCQl1cmw6ICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRl
LmpzIiwKKwkJCQkJCQkJc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdv
cmtTdGFnZS5SZXF1ZXN0LAorCQkJCQkJfSk7CisKKwkJCQkJCWxldCBpbnRlcmNlcHRXaXRoUmVx
dWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0
SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuTmV0d29y
a0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAg
IHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
aW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcyIsCisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3RJZAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAg
ICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZh
bHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisJCQkJCQlhd2FpdCBJbnNwZWN0
b3JUZXN0LmF3YWl0RXZlbnQoIk92ZXJyaWRlQ29udGVudERpZExvYWQiKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBp
bnRlcmNlcHRpb24gaW50ZXJjZXB0aW5nIHRoZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhm
ZGZlYmQxODZhYWM2ZDdmNzMxM2YxZTgxYzNhOWMzYTY2ZTE3N2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRl
cmNlcHQtZWNoby5waHAKQEAgLTAsMCArMSwxNiBAQAorPD9waHAKKyRtZXRob2QgPSAkX1NFUlZF
UlsnUkVRVUVTVF9NRVRIT0QnXTsKK2VjaG8gIntcbiI7CitlY2hvICIgIFwibWV0aG9kXCI6IFwi
JG1ldGhvZFwiLFxuIjsKK2VjaG8gIiAgXCJoZWFkZXJzXCI6IHtcbiI7Citmb3JlYWNoIChnZXRh
bGxoZWFkZXJzKCkgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CisJZWNobyAiICAgIFwiJG5hbWVcIjog
XCIkdmFsdWVcIixcbiI7Cit9CitlY2hvICIgIH0sXG4iOworZWNobyAiICBcInBvc3RcIjoge1xu
IjsKK2ZvcmVhY2ggKCRfUE9TVCBhcyAkbmFtZSA9PiAkdmFsdWUpeworCWVjaG8gIiAgICBcIiRu
YW1lXCI6IFwiJHZhbHVlXCIsXG4iOworfQorZWNobyAiICB9LFxuIjsKK2VjaG8gIn1cbiI7Cis/
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1
ZXN0LW92ZXJyaWRlbi1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNhNGE4YjYxN2IwNGM5NWNlYTE0
NjMxYjRkY2VmMDg5ZjM2MTk0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJy
aWRlbi1wYWdlLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KwkgIDxoZWFkPgorCQkJCTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3Qu
anMiPgorCQkJCTwvc2NyaXB0PgorCQk8L2hlYWQ+CisJICA8Ym9keT4KKwkJCQk8cD5PdmVycmlk
ZGVuIHBhZ2UgY29udGVudDwvcD4KKwkJCQk8c2NyaXB0PmFsZXJ0KCJSRVBMQUNFRCBIVE1MIENP
TlRFTlQiKTsgVGVzdFBhZ2UuY29tcGxldGVUZXN0KCk7PC9zY3JpcHQ+CisJCTwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQt
cmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3OGVjNGUyNjExNTdkMzMw
OTE5YzEzMjg5OTk1NTc3OTg5MzdlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1v
dmVycmlkZW4tc2NyaXB0LmpzCkBAIC0wLDAgKzEsMiBAQAorYWxlcnQoIk9WRVJSSURFTiBvdmVy
cmlkZS5qcyBURVhUIik7CitUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJp
ZGVDb250ZW50RGlkTG9hZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcwppbmRleCBhMDI2NDlkNTZi
ZGIzZDI4NWMxZjBkN2Y4MDBjZmU0MTA4OTIyNjQxLi44MzFhNjFmNjc4NWU0NDg4YjEyZDdkZmRl
ZjFmZTY2ZDM3NTUxMjIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcwpAQCAtODcsMTIgKzg3LDE0
IEBAIFRlc3RQYWdlLnJ1blRlc3QgPSB3aW5kb3cucnVuVGVzdCA9IGZ1bmN0aW9uKCkKICAgICBp
ZiAodHlwZW9mIHRlc3RGdW5jdGlvbiAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICBhbGVydCgi
RmFpbGVkIHRvIHNlbmQgdGVzdCgpIGJlY2F1c2UgaXQgaXMgbm90IGEgZnVuY3Rpb24uIik7CiAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgbGV0IHVybCA9IHRlc3RSdW5uZXIuaW5zcGVjdG9yVGVzdFN0dWJVUkw7CiAgICAgaWYg
KCF1cmwpIHsKICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBvYnRhaW4gaW5zcGVjdG9yIHRlc3Qg
c3R1YiBVUkwuIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5G
cm9udGVuZChpbml0aWFsaXplcnMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjMxNzRkMDZhOGUzZGEzNDYxNTFjNjI0NDFiYzMwZjVhYjkwZTNlYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uLgorCisK
Kz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbgorLS0g
UnVubmluZyB0ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yayBy
ZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdENvbnRpbnVl
CitSZXNwb25zZSBkYXRhOiAneyJhbHBoYSI6ImJldGEiLCJnYW1tYSI6MTIzNDV9JworCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdElu
dGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXF1ZXN0Cit0ZXh0OiBpbnRlcmNlcHRlZCByZXF1ZXN0
CisKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246
IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlCit0ZXh0OiBp
bnRlcmNlcHRlZCBkYXRhCitzdGF0dXM6IDIwMAorc3RhdHVzVGV4dDogT0sKK21pbWVUeXBlOiBh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KK215LWhlYWRlcjogbXktdmFsdWUKKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IE5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJbnRlcmNl
cHRlZC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yCitSZXF1ZXN0IGVycm9yOiAnUmVxdWVzdCBj
YW5jZWxlZCcKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU3OGVlNzM3MzJmMGIwOGIzMDIwOWM5NDlm
MzdkOGRjMzhkOGE3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKQEAgLTAsMCArMSwxNzcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBmZXRjaERhdGEoKSB7Cisg
ICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJ3Jlc291cmNlcy9k
YXRhLmpzb24nKTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRleHQ6IGF3YWl0IHJl
c3BvbnNlLnRleHQoKSwKKyAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLAorICAg
ICAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCwKKyAgICAgICAgICAgIG1p
bWVUeXBlOiByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyksCisgICAgICAgICAg
ICBoZWFkZXI6IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdteS1oZWFkZXInKSwKKyAgICAgICAgfTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiBlLm1lc3NhZ2U7CisgICAgfQorfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRl
QXN5bmNTdWl0ZSgiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiIpOworCisgICAgZnVuY3Rp
b24gcHJpbnRGZXRjaFJlc3VsdChyZXN1bHQpCisgICAgeworICAgICAgICBQcm90b2NvbFRlc3Qu
bG9nKCJ0ZXh0OiAiICsgcmVzdWx0LnRleHQpOworICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJz
dGF0dXM6ICIgKyByZXN1bHQuc3RhdHVzKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygic3Rh
dHVzVGV4dDogIiArIHJlc3VsdC5zdGF0dXNUZXh0KTsKKyAgICAgICAgUHJvdG9jb2xUZXN0Lmxv
ZygibWltZVR5cGU6ICIgKyByZXN1bHQubWltZVR5cGUpOworICAgICAgICBQcm90b2NvbFRlc3Qu
bG9nKCJteS1oZWFkZXI6ICIgKyByZXN1bHQuaGVhZGVyKTsKKyAgICB9CisKKyAgICBsZXQgdXJs
OworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInNldFVwIiwKKyAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBbcmVzdWx0MSwgcmVzdWx0Miwge3Jl
c3VsdH1dID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclBy
b3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5lbmFibGUiLCBwYXJhbXM6IHt9
fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRo
b2Q6ICJSdW50aW1lLmVuYWJsZSIsIHBhcmFtczoge319KSwKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBw
YXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImRvY3VtZW50LlVSTCIs
CisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29s
LmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5zZXRJbnRlcmNlcHRpb25FbmFibGVkIiwg
cGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsCisgICAgICAgICAg
ICAgICAgfX0pLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGxldCBiYXNlVVJMID0g
cmVzdWx0LnZhbHVlLnN1YnN0cmluZygwLCByZXN1bHQudmFsdWUubGFzdEluZGV4T2YoIi8iKSk7
CisgICAgICAgICAgICB1cmwgPSBiYXNlVVJMICsgIi9yZXNvdXJjZXMvZGF0YS5qc29uIjsKKyAg
ICAgICAgICAgIGF3YWl0IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAi
TmV0d29yay5hZGRJbnRlcmNlcHRpb24iLCBwYXJhbXM6IHsgdXJsLCBzdGFnZTogInJlcXVlc3Qi
IH19KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2Vw
dGVkLmludGVyY2VwdENvbnRpbnVlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGNvbnRp
bnVlIGludGVyY2VwdGVkIHJlcXVlc3QuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAgICAgICAgbGV0IFtm
ZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwo
WworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9k
OiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBleHBy
ZXNzaW9uOiAiZmV0Y2hEYXRhKCkiLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVxdWVz
dEludGVyY2VwdGVkIn0pLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIC8vIExldCB0
aGUgbG9hZCBjb250aW51ZS4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQg
UHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29t
bWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9i
amVjdElkLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLAorICAgICAg
ICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENv
bW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1
ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHN0YWdlOiAicmVxdWVzdCIsCisgICAgICAgICAg
ICAgICAgfX0pLAorICAgICAgICAgICAgXSk7CisgICAgICAgICAgICBQcm90b2NvbFRlc3QubG9n
KCJSZXNwb25zZSBkYXRhOiAnIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZS50ZXh0LnRyaW0o
KSArICInIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIk5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJbnRl
cmNlcHRlZC5pbnRlcmNlcHRXaXRoUmVxdWVzdCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVz
dCBmdWxmaWxsIGludGVyY2VwdGVkIHJlcXVlc3Qgd2l0aCByZXNwb25zZS4iLAorICAgICAgICBh
c3luYyB0ZXN0KCkgeworICAgICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQu
CisgICAgICAgICAgICBsZXQgW2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0g
PSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wu
YXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAg
ICAgICAgICAgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoKSIsCisgICAgICAgICAgICAg
ICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQoe2V2
ZW50OiAiTmV0d29yay5yZXF1ZXN0SW50ZXJjZXB0ZWQifSksCisgICAgICAgICAgICBdKTsKKwor
ICAgICAgICAgICAgLy8gRnVsZmlsbCB0aGUgcmVxdWVzdCB3aXRoIGRhdGEuCisgICAgICAgICAg
ICBsZXQgW2ZldGNoUmVzdWx0XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuYXdhaXRQ
cm9taXNlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VPYmplY3RJZDog
ZmV0Y2hSZXN1bHRQcm9taXNlLnJlc3VsdC5vYmplY3RJZCwKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuQnlWYWx1ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVy
Y2VwdFdpdGhSZXF1ZXN0IiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJ
ZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAg
ICB1cmw6IHVybC5yZXBsYWNlKCdkYXRhLmpzb24nLCAnZGF0YTIuanNvbicpLAorICAgICAgICAg
ICAgICAgIH19KSwKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0Lmxv
ZygidGV4dDogIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZS50ZXh0KTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29y
ayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFJlcXVl
c3RXaXRoUmVzcG9uc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZnVsZmlsbCBpbnRl
cmNlcHRlZCByZXF1ZXN0IHdpdGggcmVzcG9uc2UuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsK
KyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAgICAgICAg
bGV0IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlz
ZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7
bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAg
ICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsu
cmVxdWVzdEludGVyY2VwdGVkIn0pLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIC8v
IEZ1bGZpbGwgdGhlIHJlcXVlc3Qgd2l0aCBkYXRhLgorICAgICAgICAgICAgbGV0IFtmZXRjaFJl
c3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJv
dG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmF3YWl0UHJvbWlzZSIsIHBhcmFt
czogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJv
bWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAgICAgICAgICAgIHJldHVybkJ5VmFsdWU6
IHRydWUKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJv
dG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRo
UmVzcG9uc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRl
cmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1
czogMjAwLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAg
ICAgICAgICAgICBoZWFkZXJzOiB7ICJteS1oZWFkZXIiOiAibXktdmFsdWUiIH0sCisgICAgICAg
ICAgICAgICAgICAgIG1pbWVUeXBlOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKKyAgICAg
ICAgICAgICAgICAgICAgY29udGVudDogYnRvYSgiaW50ZXJjZXB0ZWQgZGF0YSIpLAorICAgICAg
ICAgICAgICAgICAgICBiYXNlNjRFbmNvZGVkOiB0cnVlLAorICAgICAgICAgICAgICAgIH19KSwK
KyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgcHJpbnRGZXRjaFJlc3VsdChmZXRjaFJlc3Vs
dC5yZXN1bHQudmFsdWUpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1
ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdCBhYm9ydCBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggZXJyb3IuIiwKKyAg
ICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJj
ZXB0IGl0LgorICAgICAgICAgICAgbGV0IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVk
RXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclBy
b3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczog
eworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiLAorICAgICAg
ICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2
ZW50KHtldmVudDogIk5ldHdvcmsucmVxdWVzdEludGVyY2VwdGVkIn0pLAorICAgICAgICAgICAg
XSk7CisKKyAgICAgICAgICAgIC8vIEFib3J0IHRoZSByZXF1ZXN0IGFzIGNhbmNlbGVkLgorICAg
ICAgICAgICAgbGV0IFtmZXRjaFJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1l
LmF3YWl0UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlT2Jq
ZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAg
ICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAg
ICAgICAgICAgICAgICBlcnJvclR5cGU6ICJDYW5jZWxsYXRpb24iLAorICAgICAgICAgICAgICAg
IH19KSwKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUmVx
dWVzdCBlcnJvcjogJyIgKyBmZXRjaFJlc3VsdC5yZXN1bHQudmFsdWUgKyAiJyIpOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1
ZXN0IGludGVyY2VwdGlvbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51
ZS1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVz
b3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbAppbmRleCA0NDgwNjQyMDA0NDc2
OTdmYjA3ZjQxNmU5Nzg2Mzk4ZTAwM2QyNDYwLi5kNjZlMTQwZWI3MTc4NjQ3YzM4ODYyOWIwZDEz
ZTFhYTAxYTAzMGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9s
b2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVl
LXJlc3BvbnNlLmh0bWwKQEAgLTQ2LDcgKzQ2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICAvLyBMZXQgdGhlIGxvYWQgY29udGludWUuCiAgICAgICAgICAgICBhd2FpdCBQcm9taXNl
LmFsbChbCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZl
bnQ6ICJOZXR3b3JrLnJlc3BvbnNlUmVjZWl2ZWQifSksCi0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdENvbnRp
bnVlIiwgcGFyYW1zOiB7cmVxdWVzdElkOiBtZXNzYWdlT2JqZWN0LnBhcmFtcy5yZXF1ZXN0SWR9
fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRo
b2Q6ICJOZXR3b3JrLmludGVyY2VwdENvbnRpbnVlIiwgcGFyYW1zOiB7cmVxdWVzdElkOiBtZXNz
YWdlT2JqZWN0LnBhcmFtcy5yZXF1ZXN0SWQsIHN0YWdlOiAicmVzcG9uc2UifX0pLAogICAgICAg
ICAgICAgXSk7CiAgICAgICAgICAgICBQcm90b2NvbFRlc3QucGFzcygiUmVzcG9uc2UgcmVjZWl2
ZWQuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9kYXRhMi5qc29uIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2RhdGEyLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg2Y2E0OTRjMWRmMzk2YjNkOTgyMTdjMTM4ZmI3MTU4
ODFmMzJhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9kYXRhMi5qc29uCkBAIC0wLDAgKzEgQEAKK2ludGVyY2VwdGVkIHJlcXVlc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400965</attachid>
            <date>2020-06-03 13:34:54 -0700</date>
            <delta_ts>2020-06-03 15:43:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200603133453.patch</filename>
            <type>text/plain</type>
            <size>89819</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDY5YzkxNjExOTgxODcwMWVjYTY1YTkyMjE4ODJiNGI1MWZhMGNjLi41YjMwM2UwYjQ5YTExODMx
MjQzYWU2NDI5NjVjODg1MGU1OGFiZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wMi0yOSAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0wMyAgUm9iIEJ1aXMg
IDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1ha2UgZ2VuZXJhdGVkIEMrKyBjb2RlIHVz
ZSBtb2Rlcm4gQysrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIxMzQ5ZTExOTU4YmVlNTBlYTU2NTk5OWVkYzhm
NGFhOTBiZGQzYS4uNTA4YzI4MTEyMmZhZWIyMjk2NTUxN2ZhMjdjMjI4OGJmMzMwZTRjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAyLTI5ICBQYXZlbCBGZWxkbWFuICA8cGF2
ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNl
IHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRl
cmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRk
cyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAg
IGNhbiBiZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVu
dW0gY2FuIG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMu
CisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRt
bAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
SW50ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNl
cHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVy
Y2VwdFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlz
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZElu
dGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRp
bnVlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJj
ZXB0Q29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpp
bnRlcmNlcHRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q6OlBlbmRpbmdJbnRlcmNlcHRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6SW50ZXJjZXB0
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cHJlbG9hZCk6CisKIDIwMjAtMDYtMDMgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBNYWtlIGdlbmVyYXRlZCBDKysgY29kZSB1c2UgbW9kZXJuIEMrKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cKaW5kZXggNzNkNWY4ODk0YWIxYjczMTJhYjViY2U4OGI3ZTcyMGJiNjQwZGE4
Ny4uZmJjMDRhNWVkYThlYmNhYWMyYWJmNDg3YzIwNWJiZTQ2YjczNzA1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDUtMTMgIFBhdmVsICA8cGF2ZWwu
ZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJl
cXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNl
cHRpb24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBO
ZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNh
biBiZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0g
Y2FuIG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgor
ICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgor
ICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVy
cmlkZSk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxS
ZXNvdXJjZU92ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5y
ZXF1ZXN0SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBl
LnJlc3BvbnNlSW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlLl9oYW5kbGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5l
dHdvcmtPYnNlcnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKwogMjAyMC0wNi0w
MSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogR3JhcGhpY3M6IHNob3VsZCB1c2UgdGhlIGBpZGAgKG5hbWUpIG9mIHRoZSBhbmltYXRp
b24gaWYgaXQgZXhpc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRhMzU1NDBkMDM4MzlmZTE2MzE2NTg0Yjk4MTUw
NzY0NTBmYjU3ODMuLjMzZGVlMjUzMjg3YTJmYWRkY2IxMmU4NDE2YWIzMTBiYzI1ODkxMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDItMjkgIFBhdmVsIEZlbGRtYW4gIDxwYXZl
bC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2Ug
cmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVy
Y2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRz
IE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAg
Y2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51
bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIw
LTA2LTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
bW9yZSBsb2dnaW5nIHJlbGF0ZWQgdG8gc2VydmljZSB3b3JrZXIgZmV0Y2ggZXZlbnQgaGFuZGxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
TmV0d29yay5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9O
ZXR3b3JrLmpzb24KaW5kZXggZjI0MjVkZDZhZmMwZWZiZjFkMTE1MjIwZmQ0MjQ2YWZlMmZiOTJl
MS4uZmY4NGZjYTBmZWE1ZDJhZGU4MzU3NDc5OGYxOWUwOWM5ZDdhNjE3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24K
QEAgLTE1NSw3ICsxNTUsMTMgQEAKICAgICAgICAgICAgICJpZCI6ICJOZXR3b3JrU3RhZ2UiLAog
ICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29yayByZXF1ZXN0LiIsCi0gICAgICAgICAgICAi
ZW51bSI6IFsicmVzcG9uc2UiXQorICAgICAgICAgICAgImVudW0iOiBbInJlcXVlc3QiLCAicmVz
cG9uc2UiXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiUmVzb3Vy
Y2VFcnJvclR5cGUiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29yayByZXF1ZXN0LiIs
CisgICAgICAgICAgICAiZW51bSI6IFsiR2VuZXJhbCIsICJBY2Nlc3NDb250cm9sIiwgIkNhbmNl
bGxhdGlvbiIsICJUaW1lb3V0Il0KICAgICAgICAgfQogICAgIF0sCiAgICAgImNvbW1hbmRzIjog
WwpAQCAtMjQ0LDEwICsyNTAsMTAgQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBZGQg
YW4gaW50ZXJjZXB0aW9uLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwK
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
dXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJs
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVSTCBwYXR0ZXJuIHRvIGludGVy
Y2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcgaWYgbm90IHNwZWNpZmllZCBvciBlbXB0eSIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdl
IiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5n
IG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Jl
Z2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9u
LiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29y
a1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50
IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVn
dWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7
CkBAIC0yNTYsMTcgKzI2MiwyOSBAQAogICAgICAgICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdl
Il0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRv
IGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZl
IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJ
ZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0g
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFy
YW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29y
ayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUi
OiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0
cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAgICAg
ICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJpbnRl
cmNlcHRDb250aW51ZSIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udGludWUgYW4g
aW50ZXJjZXB0aW9uIHdpdGggbm8gbW9kaWZpY2F0aW9ucy4iLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkNvbnRpbnVlIHJlcXVlc3Qgb3IgcmVzcG9uc2Ugd2l0aG91dCBtb2RpZmljYXRp
b25zLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwg
IiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBp
bnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9Cisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQi
LCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsg
cmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJT
dGFnZSB0byBjb250aW51ZS4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBw
cm92aWRlZCBvbmUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0
aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3Ig
cmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWV0
aG9kIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAi
SFRUUCByZXF1ZXN0IG1ldGhvZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwi
LCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQ
IHJlcXVlc3QgdXJsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAi
JHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAg
cmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlm
aWVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAi
c3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1
ZXN0IGRhdGEsIGJhc2U2NC1lbmNvZGVkLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAog
ICAgICAgICB7CkBAIC0yODIsNiArMzAwLDI3IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVzIHRleHQuIFBhc3MgdGhyb3VnaCBvcmlnaW5h
bCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJo
ZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMg
aWYgdW5tb2RpZmllZC4iIH0KICAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvdmlkZSByZXNwb25zZSBmb3IgYW4gaW50ZXJjZXB0
ZWQgcmVxdWVzdC4gUmVxdWVzdCBjb21wbGV0ZWx5IGJ5cGFzc2VzIHRoZSBuZXR3b3JrIGluIHRo
aXMgY2FzZSBhbmQgaXMgaW1tZWRpYXRlbHkgZnVsZmlsbGVkIHdpdGggdGhlIHByb3ZpZGVkIGRh
dGEuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklk
ZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4i
IH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5n
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjog
ImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBi
YXNlNjQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6
ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTUlNRSBUeXBlIGZvciB0aGUgZGF0YS4iIH0sCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXMiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRl
c2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUuIFBhc3MgdGhyb3VnaCBvcmln
aW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVz
cG9uc2Ugc3RhdHVzIHRleHQuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2Rp
ZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAi
SGVhZGVycyIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhy
b3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0KKyAgICAgICAgICAgIF0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0UmVxdWVz
dFdpdGhFcnJvciIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmFpbCByZXF1ZXN0IHdp
dGggZ2l2ZW4gZXJyb3IgdHlwZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAi
ZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVx
dWVzdCB0byBmYWlsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yVHlwZSIs
ICIkcmVmIjogIlJlc291cmNlRXJyb3JUeXBlIiwgImRlc2NyaXB0aW9uIjogIkRlbGl2ZXIgZXJy
b3IgcmVhc29uIGZvciB0aGUgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAgICAgICAgICAgXQogICAg
ICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpAQCAtMzU3LDkgKzM5NiwxNyBAQAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNoZWRSZXNvdXJj
ZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAgICAgICAgICAg
IF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdElu
dGVyY2VwdGVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhUVFAg
cmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3QgcmVzcG9uZCB3
aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+LCA8Y29kZT5OZXR3b3Jr
LmludGVyY2VwdFdpdGhSZXF1ZXN0PC9jb2RlPmAgb3IgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRX
aXRoUmVzcG9uc2U8L2NvZGU+YCB0byByZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAorICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQi
LCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhp
cyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxpZXIgPGNvZGU+
TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicmVxdWVzdCIsICIkcmVmIjogIlJlcXVlc3QiLCAiZGVzY3JpcHRpb24iOiAiT3Jp
Z2luYWwgcmVxdWVzdCBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlzIGlzIGNvbnRp
bnVlZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAg
ICAgIm5hbWUiOiAicmVzcG9uc2VJbnRlcmNlcHRlZCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBUaGUg
ZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGlu
dWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8L2NvZGU+YCB0
byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBUaGUgZnJvbnRl
bmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2Nv
ZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2RlPmAgdG8gY29u
dGludWUgdGhpcyByZXNwb25zZS4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdl
Il0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVu
dGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRzIHdpdGggYW4g
ZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4iIH0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCmluZGV4IGIwZDc2NjRhMGEwYjYwNDkyNDA5ZWQ1OWFhMzA5MjM2N2Y2ZGRhNjguLjBmMGYy
YTEzNmVjYzNkZDU0Njg5M2RjYWM5NTAzMjlkNjIxYjZiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC04MTIs
MTAgKzgxMiwxNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lD
YWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhYwogICAgIH0KIH0KIAotYm9vbCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQotICAgICAgICByZXR1cm4g
bmV0d29ya0FnZW50LT53aWxsSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgcmV0
dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdChyZXF1ZXN0KTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCisgICAgICAg
IHJldHVybiBuZXR3b3JrQWdlbnQtPnNob3VsZEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC04MjYsNiArODMzLDEyIEBAIGJvb2wgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8q
IG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50
KCkpCisgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1v
dmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJj
ZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmlu
ZGV4IGM3YjY2YmExMTU1ZDkxYjNjNWUwZTMxMmUxNGJkMmZlNzMyODZkMjUuLmRmOTM5MDViNDVi
YWU0Yzc0YTcxZDFlYWU4OWMxMjVlMDE4M2EyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uUHVibGljLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb24u
aCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgpAQCAtMjM0LDggKzIzNSwxMCBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291
cmNlKENhY2hlZFJlc291cmNlJik7CiAKLSAgICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBi
b29sIHdpbGxJbnRlcmNlcHQoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGlj
IHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lk
IGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPik7CkBAIC00NDIsOCArNDQ1LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAg
ICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJj
ZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgYm9vbCB3
aWxsSW50ZXJjZXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVy
Y2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAg
IHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtMTI1Nywx
MSArMTI2MiwxOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmCiAgICAgd2lsbERlc3Ryb3lDYWNo
ZWRSZXNvdXJjZUltcGwoY2FjaGVkUmVzb3VyY2UpOwogfQogCi1pbmxpbmUgYm9vbCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIGJvb2wgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05U
RU5EUyhmYWxzZSk7CiAgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm4gd2lsbEludGVyY2Vw
dFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKKyAgICAgICAgcmV0
dXJuIHdpbGxJbnRlcmNlcHRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0KTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uUHVibGljOjpoYXNGcm9udGVuZHMoKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1
cm4gc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVl
c3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTI3Myw2ICsxMjg2LDEzIEBAIGlubGlu
ZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4m
JiBoYW5kbGVyKQoreworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3Vs
ZEludGVyY2VwdFJlcXVlc3QoKmxvYWRlci5mcmFtZSgpLCBsb2FkZXIucmVxdWVzdCgpKSk7Cisg
ICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
RnJhbWUobG9hZGVyLmZyYW1lKCkpKQorICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCBy
ZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA5NTRhYWYxMjFhOWZhNTA3ZDgz
YmMxMGFlMzdkZTFmMTI4ZjdkY2ZjLi5lMzhlZjM5OGU3ZTlhZmMxZTAxYTU0YjljZTY4ZmMyMzU5
OGU5MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtMzAsMTEgKzMwLDIxIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0KTsKK30KKwog
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3Bv
bnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJ
bnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpOwogfQogCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik+JiYgaGFuZGxlcikKK3sKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2Vw
dFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSwgaWRlbnRp
ZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKaW5kZXggYjY3ZTg5Yjgw
YjRlN2E4NTg2Y2FjODFhZGU1ZDU4YTFiY2IwZDQzMS4uYTMyZjg3N2VhYTA0ZjI3ZDEyMTI3MGNm
ZjVhY2MzYjAzMmMxYzZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaApAQCAtMzYsMTQgKzM2LDI3IEBA
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNv
dXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4pPiYmKTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1l
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJl
cXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogfTsKIAoraW5saW5lIGJvb2wg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNv
bnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAg
IEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CisgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJ
bnRlcm5hbCgqZnJhbWUsIHJlcXVlc3QpOworfQorCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKQEAgLTUzLDYgKzY2LDEyIEBAIGlubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUqCiAgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwo
KmZyYW1lLCByZXNwb25zZSk7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7
CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJj
ZXB0UmVxdWVzdChsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOworICAgIGludGVy
Y2VwdFJlcXVlc3RJbnRlcm5hbChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggYWZjZGQyYTdm
YWZmZTBiZWM5ODIwNzJkODk0YmM4NWM2ZTMwYzQ0Yy4uNmYwMzJjNzBlNTZhZmEzYmQ0YzVmODA1
ZmY0MGEwNzM0ZWMzOGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNDMsNiArNDMsNyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJGb3JtRGF0YS5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJI
VFRQSGVhZGVyTWFwLmgiCkBAIC04NDEsMTIgKzg0MiwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5jbGVh
cigpOwogICAgIG1fZXh0cmFSZXF1ZXN0SGVhZGVycy5jbGVhcigpOwogCisgICAgY29udGludWVQ
ZW5kaW5nUmVxdWVzdHMoKTsKICAgICBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsKIAogICAg
IHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGZhbHNlKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQorYm9vbCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsLCBOZXR3b3JrU3RhZ2UgbmV0d29ya1N0
YWdlKQogewogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAtODU1LDYg
Kzg1NywxMCBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVS
TCB1cmwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgaW50ZXJjZXB0
IDogbV9pbnRlcmNlcHRzKSB7CisgICAgICAgIGlmIChpbnRlcmNlcHQubmV0d29ya1N0YWdlICE9
IG5ldHdvcmtTdGFnZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoaW50ZXJj
ZXB0LnVybC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYXV0
byBzZWFyY2hTdHJpbmdUeXBlID0gaW50ZXJjZXB0LmlzUmVnZXggPyBDb250ZW50U2VhcmNoVXRp
bGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpSZWdleCA6IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6
OlNlYXJjaFN0cmluZ1R5cGU6OkV4YWN0U3RyaW5nOwogICAgICAgICBhdXRvIHJlZ2V4ID0gQ29u
dGVudFNlYXJjaFV0aWxpdGllczo6Y3JlYXRlUmVndWxhckV4cHJlc3Npb25Gb3JTZWFyY2hTdHJp
bmcoaW50ZXJjZXB0LnVybCwgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUsIHNlYXJjaFN0cmluZ1R5
cGUpOwogICAgICAgICBpZiAocmVnZXgubWF0Y2godXJsU3RyaW5nKSAhPSAtMSkKQEAgLTg2NCw2
ICs4NzAsMTMgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChV
UkwgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHBlbmRpbmdS
ZXF1ZXN0IDogbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAgIHBl
bmRpbmdSZXF1ZXN0LT5jb250aW51ZVdpdGhPcmlnaW5hbFJlcXVlc3QoKTsKKyAgICBtX3BlbmRp
bmdJbnRlcmNlcHRSZXF1ZXN0cy5jbGVhcigpOworfQorCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6Y29udGludWVQZW5kaW5nUmVzcG9uc2VzKCkKIHsKICAgICBmb3IgKGF1dG8mIHBlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZSA6IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy52YWx1ZXMo
KSkKQEAgLTEwMjksMTggKzEwNDIsMTggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNl
dEludGVyY2VwdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib28KIAogICAg
IG1faW50ZXJjZXB0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAgICBpZiAoIW1faW50ZXJjZXB0
aW9uRW5hYmxlZCkKKyAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkgeworICAgICAgICBj
b250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgICAgICBjb250aW51ZVBlbmRpbmdSZXNwb25z
ZXMoKTsKKyAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNl
cHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgs
IGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKQordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmFkZEludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCog
b3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgpCiB7Ci0g
ICAgaWYgKG5ldHdvcmtTdGFnZVN0cmluZykgewotICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3
b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICBpZiAoIW5ldHdvcmtTdGFnZSkgewotICAgICAgICAg
ICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAq
bmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAg
IGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVy
czo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtTdGFn
ZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0
YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBJbnRlcmNlcHQgaW50ZXJjZXB0OwpAQCAtMTA0OSwyMSArMTA2MiwxOCBAQCB2b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaQogICAgICAgICBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSA9ICpvcHRp
b25hbENhc2VTZW5zaXRpdmU7CiAgICAgaWYgKG9wdGlvbmFsSXNSZWdleCkKICAgICAgICAgaW50
ZXJjZXB0LmlzUmVnZXggPSAqb3B0aW9uYWxJc1JlZ2V4OwotCi0gICAgLy8gRklYTUU6IFN1cHBv
cnQgaW50ZXJjZXB0aW5nIHJlcXVlc3RzLgorICAgIGludGVyY2VwdC5uZXR3b3JrU3RhZ2UgPSBu
ZXR3b3JrU3RhZ2UudmFsdWUoKTsKIAogICAgIGlmICghbV9pbnRlcmNlcHRzLmFwcGVuZElmTm90
Q29udGFpbnMoaW50ZXJjZXB0KSkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJjZXB0IGZv
ciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlzUmVnZXggYWxyZWFkeSBleGlzdHMiX3M7CisgICAgICAg
IGVycm9yU3RyaW5nID0gIkludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsLCBnaXZlbiBpc1JlZ2V4IGFu
ZCBnaXZlbiBzdGFnZSBhbHJlYWR5IGV4aXN0cyJfczsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcp
Cit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29y
a1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsSXNSZWdleCkKIHsKLSAgICBpZiAobmV0d29ya1N0YWdlU3RyaW5nKSB7Ci0g
ICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9y
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6Ok5ldHdvcmtTdGFnZT4oKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgIGlmICgh
bmV0d29ya1N0YWdlKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVu
a25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3b3JrU3RhZ2VTdHJp
bmcpOworICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFr
ZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0YWdlU3RyaW5nKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVyY2VwdCBpbnRlcmNlcHQ7CkBAIC0x
MDcyLDE5ICsxMDgyLDI3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1vdmVJbnRl
cmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTCiAgICAgICAgIGludGVy
Y2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0
aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElzUmVn
ZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisgICAg
aW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9IG5ldHdvcmtTdGFnZS52YWx1ZSgpOwogCiAgICAgaWYg
KCFtX2ludGVyY2VwdHMucmVtb3ZlQWxsKGludGVyY2VwdCkpCiAgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlzUmVnZXgiX3M7
CiB9CiAKLWJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0UmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6d2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAg
aWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1
ZXN0KQorICAgICAgICB8fCBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0
YWdlOjpSZXNwb25zZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBp
ZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
cmV0dXJuIHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpKTsKKyAgICByZXR1cm4gc2hvdWxk
SW50ZXJjZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCk7CiB9CiAKIGJv
b2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwOTIsNyArMTExMCwyMSBAQCBib29sIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcAogICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVy
bCgpKTsKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpLCBOZXR3b3Jr
U3RhZ2U6OlJlc3BvbnNlKTsKK30KKwordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVy
Y2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQoreworICAgIEFTU0VSVChtX2Vu
YWJsZWQpOworICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOworCisgICAgU3RyaW5n
IHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGxvYWRlci5pZGVudGlm
aWVyKCkpOworICAgIGlmIChtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5jb250YWlucyhyZXF1
ZXN0SWQpKSB7CisgICAgICAgIGhhbmRsZXIobG9hZGVyLnJlcXVlc3QoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuc2V0KHJlcXVlc3RJ
ZCwgbWFrZVVuaXF1ZTxQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdD4oJmxvYWRlciwgV1RGTW92ZSho
YW5kbGVyKSkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0SW50ZXJjZXB0ZWQo
cmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChsb2FkZXIucmVxdWVzdCgp
KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKQEAgLTExMTIsMTUgKzExNDQsNjkgQEAgdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNwb25zZUludGVy
Y2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNl
LCBudWxscHRyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRD
b250aW51ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
KQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYg
bmV0d29ya1N0YWdlU3RyaW5nKQogewotICAgIGF1dG8gcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRha2UocmVxdWVzdElkKTsKLSAgICBpZiAo
IXBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNz
aW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7Cisg
ICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlPihuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0d29ya1N0
YWdlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3Jr
U3RhZ2U6ICJfcywgbmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHN3aXRjaCAobmV0d29ya1N0YWdlLnZhbHVlKCkpIHsKKyAgICBjYXNlIE5ldHdvcmtT
dGFnZTo6UmVxdWVzdDoKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBwZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsK
KyAgICAgICAgICAgIGlmIChwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCkKKyAgICAgICAgICAgICAg
ICBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxSZXF1ZXN0KCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2lu
ZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICBjYXNlIE5ldHdvcmtTdGFnZTo6UmVzcG9u
c2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRha2UocmVxdWVzdElkKTsKKyAgICAgICAg
ICAgIGlmIChwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpCisgICAgICAgICAgICAgICAgcGVuZGlu
Z0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRp
bmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVxdWVzdChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcqIG1ldGhvZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVy
cywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0g
bV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlmIChwZW5k
aW5nUmVxdWVzdCkgeworICAgICAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcGVuZGluZ1Jl
cXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9
IGxvYWRlci0+cmVxdWVzdCgpOworICAgICAgICBpZiAodXJsKQorICAgICAgICAgICAgcmVxdWVz
dC5zZXRVUkwoVVJMKHsgfSwgKnVybCkpOworICAgICAgICBpZiAobWV0aG9kKQorICAgICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCptZXRob2QpOworICAgICAgICBpZiAoaGVhZGVycykg
eworICAgICAgICAgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6ICpoZWFkZXJzKSB7CisgICAgICAgICAgICAgICAg
U3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+YXNTdHJpbmco
aGVhZGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRkKGtl
eSwgaGVhZGVyVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVxdWVzdC5zZXRI
VFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHBvc3REYXRhKSB7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OworICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKnBvc3REYXRhLCBidWZmZXIpKSB7Cisg
ICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBwb3N0
RGF0YSJfczsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoYnVmZmVyKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcGVuZGluZ1JlcXVlc3QtPmNvbnRpbnVlV2l0aFJlcXVlc3QocmVxdWVz
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9u
c2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwog
fQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcqIG1pbWVUeXBl
LCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0LCBjb25zdCBKU09O
OjpPYmplY3QqIGhlYWRlcnMpCkBAIC0xMTY2LDYgKzEyNTIsOTEgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnMKICAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmQob3ZlcnJpZGVS
ZXNwb25zZSwgb3ZlcnJpZGVEYXRhKTsKIH0KIAordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2
NEVuY29kZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFN0cmlu
ZyYgc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0JiBoZWFkZXJzKQoreworICAgIGF1dG8g
cGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJ
ZCk7CisgICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJN
aXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbG9h
ZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgIGlmICghbG9hZGVyLT5p
ZGVudGlmaWVyKCkpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGZ1bGZpbGwg
cmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQiX3M7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBpZiAoYmFzZTY0
RW5jb2RlZCkgeworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICBpZiAo
IWJhc2U2NERlY29kZShjb250ZW50LCBidWZmZXIpKSB7CisgICAgICAgICAgICBlcnJvclN0cmlu
ZyA9ICJVbmFibGUgdG8gZGVjb2RlIGdpdmVuIGNvbnRlbnQiX3M7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CisgICAgfSBlbHNlCisgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjb250ZW50LnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQudXRmOCgpLmxlbmd0aCgpKTsKKwor
ICAgIC8vIE1pbWljIGRhdGEgVVJMIGxvYWQgYmVoYXZpb3IgLSByZXBvcnQgZGlkUmVjZWl2ZVJl
c3BvbnNlICYgZGlkRmluaXNoTG9hZGluZy4KKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
KHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci0+dXJsKCksIG1pbWVUeXBlLCBkYXRhLT5zaXplKCks
IFN0cmluZygpKTsKKyAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291
cmNlOjpJbnNwZWN0b3JPdmVycmlkZSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUo
c3RhdHVzKTsKKyAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNUZXh0KTsKKyAg
ICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0SGVhZGVyczsKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6
IGhlYWRlcnMpIHsKKyAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICBpZiAoaGVh
ZGVyLnZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICBleHBsaWNpdEhl
YWRlcnMuYWRkKGhlYWRlci5rZXksIGhlYWRlclZhbHVlKTsKKyAgICB9CisgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAgIHJlc3Bv
bnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3Bv
bnNlLm1pbWVUeXBlKCkpOworICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
LCBbbG9hZGVyLCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2
ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpOworICAgICAgICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRN
ZXRyaWNzKCkpOworICAgIH0pOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0UmVxdWVzdFdpdGhFcnJvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZVN0cmluZykKK3sKKyAgICBh
dXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1
ZXN0SWQpOworICAgIGlmICghcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQi
X3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVy
ID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgIGlmICghbG9hZGVyLT5pZGVu
dGlmaWVyKCkpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGFib3J0IHJlcXVl
c3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0
b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6
TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU+KGVycm9yVHlwZVN0cmluZyk7CisgICAgaWYgKCFl
cnJvclR5cGUpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGVy
cm9yVHlwZTogIl9zLCBlcnJvclR5cGVTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKKyAgICBzd2l0Y2ggKGVycm9yVHlwZS52YWx1ZSgp
KSB7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9y
VHlwZTo6R2VuZXJhbDoKKyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9z
LCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNz
Q29udHJvbDoKKyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJBY2Nlc3MgZGVuaWVkIl9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6Q2FuY2VsbGF0aW9u
OgorICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgbG9hZGVyLT51cmwoKSwgIlJlcXVlc3QgY2FuY2VsZWQiX3MsIFJlc291cmNlRXJyb3I6
OlR5cGU6OkNhbmNlbGxhdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OlRpbWVvdXQ6CisgICAgICAg
IGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2Fk
ZXItPnVybCgpLCAiUmVxdWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRp
bWVvdXQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsb2FkZXItPmRpZEZhaWwo
ZXJyb3IpOworfQorCiBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1Rl
eHQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4
IGJmZDEzMWU5YjU4NTZjODRkYTc3MjQ4MDVlNzEzOTdiN2M3NDg2YTkuLjRjNWU4MWU3OGJhZGQx
Njg4ZDY2OWIwYzI1Mzk0YjYwYmRhOGIzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtODgsMTAgKzg4
LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZShFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJpbmcqIHNlcmlhbGl6ZWRDZXJ0aWZp
Y2F0ZSkgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlV2ViU29ja2V0KEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JikgZmluYWw7CiAgICAg
dm9pZCBzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSBm
aW5hbDsKLSAgICB2b2lkIGFkZEludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBj
b25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVJ
bnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCog
Y2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3Jr
U3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgaW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkgZmluYWw7CisgICAgdm9pZCBhZGRJbnRlcmNl
cHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3
b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlz
UmVnZXgpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25z
dCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4KSBmaW5hbDsKKyAgICB2
b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsKKyAgICB2b2lkIGlu
dGVyY2VwdFdpdGhSZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcqIHBvc3REYXRhKSBmaW5hbDsKICAgICB2b2lkIGlu
dGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5n
KiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFJl
cXVlc3RXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCwgY29uc3QgSlNP
Tjo6T2JqZWN0JiBoZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3RXaXRo
RXJyb3IoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBlcnJvclR5cGUpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAg
ICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAtMTE4LDkgKzEyMSwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXImKTsKICAgICB2
b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2Fs
Y3VsYXRpb24oRG9jdW1lbnQmKTsKLSAgICBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOworICAgIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwor
ICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hP
dGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYp
OwogICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBp
c1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmlj
VHlwZXM6OlNlYXJjaE1hdGNoPj4mKTsKQEAgLTE0MCw3ICsxNDUsOSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKIAotICAgIGJv
b2wgc2hvdWxkSW50ZXJjZXB0KFVSTCk7CisgICAgdXNpbmcgTmV0d29ya1N0YWdlID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlOworICAgIGJvb2wgc2hvdWxkSW50
ZXJjZXB0KFVSTCwgTmV0d29ya1N0YWdlKTsKKyAgICB2b2lkIGNvbnRpbnVlUGVuZGluZ1JlcXVl
c3RzKCk7CiAgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsKIAogICAgIFdlYlNv
Y2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKQEAg
LTE1Myw2ICsxNjAsMzEgQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAor
ICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0IHsKKyAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOworICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0
KFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICA6IG1fbG9h
ZGVyKGxvYWRlcikKKyAgICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgdm9pZCBjb250aW51ZVdp
dGhPcmlnaW5hbFJlcXVlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fbG9hZGVy
LT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgICAgICAgICAgICAgIG1fY29tcGxldGlvbkhh
bmRsZXIobV9sb2FkZXItPnJlcXVlc3QoKSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNv
bnRpbnVlV2l0aFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKHJlcXVlc3QpOworICAgICAgICB9
CisKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QoKSA9IGRlZmF1bHQ7CisgICAgICAg
IFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7Cisg
ICAgfTsKKwogICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMjA0LDE1ICsyMzYsMTggQEAgcHJpdmF0ZToKICAg
ICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlIHsgdHJ1ZSB9Owog
ICAgICAgICBib29sIGlzUmVnZXggeyBmYWxzZSB9OworICAgICAgICBOZXR3b3JrU3RhZ2UgbmV0
d29ya1N0YWdlIHsgTmV0d29ya1N0YWdlOjpSZXNwb25zZSB9OwogCiAgICAgICAgIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZXJjZXB0JiBvdGhlcikgY29uc3QKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIHVybCA9PSBvdGhlci51cmwKICAgICAgICAgICAgICAgICAmJiBj
YXNlU2Vuc2l0aXZlID09IG90aGVyLmNhc2VTZW5zaXRpdmUKLSAgICAgICAgICAgICAgICAmJiBp
c1JlZ2V4ID09IG90aGVyLmlzUmVnZXg7CisgICAgICAgICAgICAgICAgJiYgaXNSZWdleCA9PSBv
dGhlci5pc1JlZ2V4CisgICAgICAgICAgICAgICAgJiYgbmV0d29ya1N0YWdlID09IG90aGVyLm5l
dHdvcmtTdGFnZTsKICAgICAgICAgfQogICAgIH07CiAgICAgVmVjdG9yPEludGVyY2VwdD4gbV9p
bnRlcmNlcHRzOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0lu
dGVyY2VwdFJlcXVlc3Q+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0czsKICAgICBIYXNoTWFw
PFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZT4+IG1fcGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlczsKIAogICAgIC8vIEZJWE1FOiBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQgc2hvdWxkIG5vdCBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggMjMxZWRlYzhjY2M3MWQ2NTIxNzEwNjM2M2Y1Y2MzNDk5MGExNjQ3ZS4uNjU5ZTJmZTg5
MDdiMzE1OTc2NjBhN2RkYzQ4Yjk0NWQzM2YwZjVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NDYsNyArODQ2
LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
Pj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKIAogICAgIHJlcXVlc3QudXBkYXRlUmVmZXJy
ZXJQb2xpY3koZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgOiBSZWZl
cnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3duZ3JhZGUpOwogCi0gICAgaWYgKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoJmZyYW1lLCByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
SW50ZXJjZXB0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcpOwog
CiAgICAgYXV0byYgcGFnZSA9ICpmcmFtZS5wYWdlKCk7CkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBW
ZWN0b3I8UmVmPFNWR0ltYWdlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmFsbENhY2hlZFNWR0lt
YWdlcygpIGNvbnN0CiAKIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKENhY2hlZFJlc291cmNl
OjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0gICAgaWYg
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoZnJhbWUoKSwg
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEludGVyY2VwdChmcmFtZSgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFp
bldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCAiSW5z
cGVjdG9yIGludGVyY2VwdCJfcyB9KTsKIAogICAgIGlmIChyZXF1ZXN0LmNoYXJzZXQoKS5pc0Vt
cHR5KCkgJiYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdCB8fCB0eXBlID09
IENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0
d29ya01hbmFnZXIuanMKaW5kZXggOTM3NjM0OWI5ZGFiYTEwMjMzYmEwMWJkNzY0OGFmMDc5YWEy
YTBmNS4uZjhkMTRjODQzNzNmY2Q1MzZmNWQ0MDFiMjIwODMxMDIyN2VhOGFiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29y
a01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMKQEAgLTE1OSw5ICsxNTksOSBAQCBXSS5OZXR3b3Jr
TWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmRpc2FibGVkKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5p
bnZva2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92
ZXJyaWRlLnVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9y
QmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc0Nh
c2VTZW5zaXRpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZWdleDogbG9jYWxS
ZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0
d29ya1N0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVz
cG9uc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KQEAgLTM2NCw3ICszNjQsNyBAQCBXSS5OZXR3b3JrTWFuYWdl
ciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAg
ICAgdXJsOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgICAgIGNhc2VT
ZW5zaXRpdmU6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAgICAg
ICAgICAgICAgaXNSZWdleDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAg
ICAgICAgICAgbmV0d29ya1N0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3
b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tl
bmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKICAgICAgICAgICAgIH07CiAK
ICAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogTmV0d29yay5hZGRJbnRl
cmNlcHRpb24gZGlkIG5vdCBleGlzdC4KQEAgLTM5Nyw3ICszOTcsNyBAQCBXSS5OZXR3b3JrTWFu
YWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAg
ICAgICAgdXJsOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgICAgIGNh
c2VTZW5zaXRpdmU6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAg
ICAgICAgICAgICAgaXNSZWdleDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAg
ICAgICAgICAgICAgbmV0d29ya1N0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5O
ZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJh
Y2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKICAgICAgICAgICAgIH07
CiAKICAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogTmV0d29yay5yZW1v
dmVJbnRlcmNlcHRpb24gZGlkIG5vdCBleGlzdC4KQEAgLTkwNiwxMiArOTA2LDIwIEBAIFdJLk5l
dHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5kZWxldGUocmVxdWVzdElk
ZW50aWZpZXIpOwogICAgIH0KIAorICAgIHJlcXVlc3RJbnRlcmNlcHRlZCh0YXJnZXQsIHJlcXVl
c3RJZCwgcmVxdWVzdCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwge3RhcmdldCwg
cmVxdWVzdElkLCByZXF1ZXN0fSk7CisgICAgfQorCiAgICAgcmVzcG9uc2VJbnRlcmNlcHRlZCh0
YXJnZXQsIHJlcXVlc3RJZCwgcmVzcG9uc2UpCiAgICAgewogICAgICAgICBsZXQgdXJsID0gV0ku
dXJsV2l0aG91dEZyYWdtZW50KHJlc3BvbnNlLnVybCk7CiAgICAgICAgIGxldCBsb2NhbFJlc291
cmNlT3ZlcnJpZGUgPSB0aGlzLmxvY2FsUmVzb3VyY2VPdmVycmlkZUZvclVSTCh1cmwpOwogICAg
ICAgICBpZiAoIWxvY2FsUmVzb3VyY2VPdmVycmlkZSB8fCBsb2NhbFJlc291cmNlT3ZlcnJpZGUu
ZGlzYWJsZWQpIHsKLSAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29u
dGludWUocmVxdWVzdElkKTsKKyAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJj
ZXB0Q29udGludWUuaW52b2tlKHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAg
ICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFn
ZS5SZXNwb25zZSwKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTEzNzcsNyArMTM4NSw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0
d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHVybDogbG9jYWxSZXNv
dXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS5pc0Nhc2VTZW5zaXRpdmUsCiAgICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJl
c291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVj
dG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAg
ICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNw
b25zZSwKICAgICAgICAgfTsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6
IE5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIC8gTmV0d29yay5yZW1vdmVJbnRlcmNlcHRpb24gZGlk
IG5vdCBleGlzdC4KQEAgLTE0MzMsNCArMTQ0MSw1IEBAIFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50
ID0gewogICAgIEJvb3RzdHJhcFNjcmlwdERlc3Ryb3llZDogIm5ldHdvcmstbWFuYWdlci1ib290
c3RyYXAtc2NyaXB0LWRlc3Ryb3llZCIsCiAgICAgTG9jYWxSZXNvdXJjZU92ZXJyaWRlQWRkZWQ6
ICJuZXR3b3JrLW1hbmFnZXItbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtYWRkZWQiLAogICAgIExv
Y2FsUmVzb3VyY2VPdmVycmlkZVJlbW92ZWQ6ICJuZXR3b3JrLW1hbmFnZXItbG9jYWwtcmVzb3Vy
Y2Utb3ZlcnJpZGUtcmVtb3ZlZCIsCisgICAgUmVxdWVzdEludGVyY2VwdGVkOiAibmV0d29yay1t
YW5hZ2VyLXJlcXVlc3QtaW50ZXJjZXB0ZWQiCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVy
LmpzCmluZGV4IDU5YzI5YzlhMzg0YjA0NzhkZDhkNmQwY2Y1OTI4YjYyOTgxODAwYWEuLmZlODgy
OWE3MWJmZDBlZWQ4NTZiNDFjM2FhZWNlNmFlN2YxYTE0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3Jr
T2JzZXJ2ZXIuanMKQEAgLTEwOCw2ICsxMDgsMTEgQEAgV0kuTmV0d29ya09ic2VydmVyID0gY2xh
c3MgTmV0d29ya09ic2VydmVyIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5EaXNwYXRjaGVyCiAg
ICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiAgICAgfQogCisgICAgcmVxdWVzdElu
dGVyY2VwdGVkKHJlcXVlc3RJZCwgcmVxdWVzdCkKKyAgICB7CisgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLnJlcXVlc3RJbnRlcmNlcHRlZCh0aGlzLl90YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVz
dCk7CisgICAgfQorCiAgICAgcmVzcG9uc2VJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIHJlc3BvbnNl
KQogICAgIHsKICAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVzcG9uc2VJbnRlcmNlcHRlZCh0
aGlzLl90YXJnZXQsIHJlcXVlc3RJZCwgcmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDAzZWJk
ODk0NGFhMWI5YmNiY2VlY2JkNWZkZDE2MTljNWFjYThkYWMuLmM1YWZmZmRkMjhlZjlhNzFlMDZl
NGQ3NmE0MDQyNzlmM2E2NmExYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3
b3JrTG9hZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdp
ZXMuaD4KQEAgLTIzMCw4ICsyMzEsMTYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKIAogICAg
IGlmICghdHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlciwgdHJh
Y2tpbmdQYXJhbWV0ZXJzKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRo
ZSBOZXR3b3JrUHJvY2VzcyIpOwotICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nl
c3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJh
bWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVt
QnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOwotICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciB8fCAhSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0KHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkp
IHsKKyAgICAgICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxv
YWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1l
KHJlc291cmNlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QocmVzb3VyY2VM
b2FkZXIsIFt0aGlzLCBwcm90ZWN0ZWRSZXNvdXJjZUxvYWRlciA9IG1ha2VSZWZQdHIoJnJlc291
cmNlTG9hZGVyKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCByZXNvdXJjZV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcygq
cHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIHRyYWNraW5nUGFyYW1ldGVycywgc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1Rp
bWUocmVzb3VyY2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSk7CiAgICAgfQog
CiAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVM
b2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIik7CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hl
X2h0dHBfc2VydmVyLnB5CmluZGV4IDhiYTk0Y2NlOTkxMTdlNDQ5MTdlNTA0ZjcwMjVlZDJmYTM4
MDUwOWQuLjczOWE3MjJkZDZhMGNmZWQ3YWMyZTllOTJhZDYzYTQzOTlkN2FmYjcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0
dHBfc2VydmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Nl
cnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5CkBAIC0xNzksNyArMTc5LDYgQEAgY2xhc3MgTGF5
b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAg
ICAgICByZXR1cm4gc2VsZi5fcG9ydF9vYmouaG9zdC5wbGF0Zm9ybQogCiAgICAgZGVmIF9zcGF3
bl9wcm9jZXNzKHNlbGYpOgotICAgICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyAlcyBzZXJ2ZXIs
IGNtZD0iJXMiJyAlIChzZWxmLl9uYW1lLCBzdHIoc2VsZi5fc3RhcnRfY21kKSkpCiAgICAgICAg
IHJldHZhbCwgZXJyID0gc2VsZi5fcnVuKHNlbGYuX3N0YXJ0X2NtZCkKICAgICAgICAgaWYgcmV0
dmFsIG9yIGxlbihlcnIpOgogICAgICAgICAgICAgcmFpc2Ugc2VsZi5fc2VydmVyX2Vycm9yKCdG
YWlsZWQgdG8gc3RhcnQgJXMnICUgc2VsZi5fbmFtZSwgZXJyLCByZXR2YWwpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTc4
NDBkODU5MjI3NWNiYzkwYWY5NjZlYzQwYTY3OGEzZmQxNjkzNy4uNDI3OGYzODVlNzViZTUwYjIx
YmUyZjkxN2Q1YzViZWRlYmUzYTBhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTA1LTI4
ICBQYXZlbCAgPHBhdmVsLmZlbGRtYW5AZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3Jr
IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3JrCisgICAgICAgIHByb3RvY29sIGRv
bWFpbi4gSXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0
aGF0CisgICAgICAgIGNhbiBiZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0
d29ya1N0YWdlIGVudW0gY2FuIG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3Bv
bnNlJyB2YWx1ZXMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4t
cmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJj
ZS13aXRoLXJlc3BvbnNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJv
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJl
c291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRl
cmNlcHQtZWNoby5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1wYWdlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2lu
dGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanM6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzOgorICAgICAgICAq
IGluc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUt
Y29udGludWUtcmVzcG9uc2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvZGF0YTIuanNvbjogQWRkZWQuCisKIDIwMjAtMDYtMDMgIERpZWdvIFBpbm8gR2FyY2lh
ICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBHYXJkZW5pbmcsIGxpbnQgV1BF
IHRlc3QgZXhwZWN0YXRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjEyNTkwNDgz
NWVmMTBiNmMwNjAzNGY2MTVmM2RlZjExOGY5ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWlu
LXJlc291cmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK0FMRVJUOiBPUklHSU5BTCBI
VE1MIENPTlRFTlQKK0FMRVJUOiBSRVBMQUNFRCBIVE1MIENPTlRFTlQKK092ZXJyaWRkZW4gcGFn
ZSBjb250ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDIxMjU5MDQ4MzVlZjEwYjZjMDYwMzRmNjE1ZjNkZWYxMThmOWVhYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKK0FMRVJUOiBPUklHSU5BTCBIVE1MIENPTlRFTlQKK0FMRVJUOiBSRVBM
QUNFRCBIVE1MIENPTlRFTlQKK092ZXJyaWRkZW4gcGFnZSBjb250ZW50CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTYwODg5NWU5OGQxZGJhOGY1NmM1OThiNTU5ZTcy
ODgyMDk5YmFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9u
c2UuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50
ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSB3aXRo
IHJlc3BvbnNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJNYWluIHJlc291cmNlIHVzZXMgcmVx
dWVzdCBpbnRlcmNlcHRpb24gb24gbmV4dCBwYWdlIGxvYWQgYW5kIGZ1bGZpbGxzIHJlcXVlc3Qi
LAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFz
c3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2Vu
dC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1y
ZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNw
ZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlc3BvbnNlID0gKGV2ZW50
KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0g
PSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJj
ZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9odG1sIiwKKyAgICAg
ICAgICAgICAgICAgICAgY29udGVudDogYDwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvYCtgc2NyaXB0PjwvaGVh
ZD48Ym9keT48cD5PdmVycmlkZGVuIHBhZ2UgY29udGVudDwvcD48c2NyaXB0PmFsZXJ0KCJSRVBM
QUNFRCBIVE1MIENPTlRFTlQiKTsgVGVzdFBhZ2UuY29tcGxldGVUZXN0KCk7PC9gK2BzY3JpcHQ+
PC9ib2R5PjwvaHRtbD5gLAorICAgICAgICAgICAgICAgICAgICBiYXNlNjRFbmNvZGVkOiBmYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICAgICAgICAg
IHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LAorICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdElu
dGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UpOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291
cmNlczogdHJ1ZX0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2Fz
ZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBpbnRlcmNlcHRpbmcgdGhlIG1h
aW4gcmVzb3VyY2UgbG9hZCB3aXRoIHJlc3BvbnNlLjwvcD4KKzxzY3JpcHQ+YWxlcnQoIk9SSUdJ
TkFMIEhUTUwgQ09OVEVOVCIpOzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1tYWluLXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NzE0YTY4YWUxMzdmNTAyYjFiNzRkMjVmMzVmMGJjZmNhOWU1YWZlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1tYWluLXJlc291cmNlLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3lu
Y1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0Iik7CisKKyAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWFpblJl
c291cmNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJNYWluIHJlc291cmNlIHVzZXMgcmVxdWVz
dCBpbnRlcmNlcHRpb24gb24gbmV4dCBwYWdlIGxvYWQiLAorICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAg
ICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tl
KHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sIiwKKyAgICAgICAg
ICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdl
LlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGludGVyY2VwdFdp
dGhSZXF1ZXN0ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJl
cXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIHRhcmdldC5O
ZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAgICAgICAg
ICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sIiwKKyAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdElkCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3Jr
TWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdpdGhSZXF1ZXN0KTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFs
c2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRp
b24gaW50ZXJjZXB0aW5nIHRoZSBtYWluIHJlc291cmNlIGxvYWQuPC9wPgorPHNjcmlwdD5hbGVy
dCgiT1JJR0lOQUwgSFRNTCBDT05URU5UIik7PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MTQxNTY4YThjNDE1MWIzMTE2ZTMxMjIzNjc3ZDI1NzYwN2U0
NDBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEzIEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGFsdGVyaW5nIHJlcXVlc3QgcHJv
cGVydGllcy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRo
b2QKK01ldGhvZD1QT1NUCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3QuSGVhZGVycworT3ZlcnJpZGVuIGhlYWRlcjpvdmVycmlkZW4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Qb3N0RGF0YQorT3ZlcnJpZGVu
IHZhbHVlOiBvdmVycmlkZW4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXBy
b3BlcnRpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2E5NTgwODgyMTg3MDgyMjllNDc1MmI5MzdmZThl
OGI3YTFhODZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwKQEAgLTAsMCAr
MSwxMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSh1cmwpCit7CisgICAg
bGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTsKKyAgICByZXR1cm4gYXdhaXQgcmVzcG9u
c2UudGV4dCgpOworfQorCithc3luYyBmdW5jdGlvbiBwb3N0RGF0YSh1cmwpCit7CisgICAgbGV0
IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7CisgICAgICAgIG1ldGhvZDogIlBPU1QiLAor
ICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0
aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKKyAgICAgICAgfSwKKyAgICAgICAgYm9keTogInZh
bHVlPW9yaWdpbmFsIgorICAgIH0pOworICAgIHJldHVybiBhd2FpdCByZXNwb25zZS50ZXh0KCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCIpOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0Lk1ldGhvZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2Qg
aW50ZXJjZXB0aW9uIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0
YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdl
dC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAg
dXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9p
bnRlcmNlcHQtZWNoby5waHA/bWV0aG9kIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVj
dG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgbGV0IGludGVyY2VwdFdpdGhSZXF1ZXN0ID0gKGV2ZW50KSA9
PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBl
dmVudC5kYXRhOworICAgICAgICAgICAgICAgIGlmICghcmVxdWVzdC51cmwuaW5jbHVkZXMoJz9t
ZXRob2QnKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHRh
cmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICJQT1NU
IiwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBXSS5u
ZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJl
cXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisgICAgICAgICAgICBs
ZXQgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlKCJmZXRjaERh
dGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bWV0aG9kJykiKTsKKyAgICAgICAgICAg
IHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5hd2FpdFByb21pc2UocmVzcG9u
c2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsKKyAgICAgICAgICAgIGxldCBkYXRhID0gZXZhbCgn
KCcgKyByZXNwb25zZS5yZXN1bHQudmFsdWUgKyAnKScpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIk1ldGhvZD0iICsgZGF0YS5tZXRob2QpOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3QuSGVhZGVycyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBo
ZWFkZXJzIGludGVyY2VwdGlvbiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgICAgICBhd2Fp
dCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAg
ICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP2hlYWRlcnMiLAorICAgICAgICAgICAgICAgIHN0YWdl
OiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1
ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgaWYgKCFyZXF1ZXN0LnVybC5pbmNs
dWRlcygnP2hlYWRlcnMnKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBoZWFk
ZXJzOiB7ICJ2YWx1ZSI6ICJvdmVycmlkZW4iIH0sCisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdp
dGhSZXF1ZXN0KTsKKworICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1
bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8u
cGhwP2hlYWRlcnMnKSIpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVu
dGltZUFnZW50LmF3YWl0UHJvbWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0SWQsIHRydWUpOwor
ICAgICAgICAgICAgbGV0IGRhdGEgPSBldmFsKCcoJyArIHJlc3BvbnNlLnJlc3VsdC52YWx1ZSAr
ICcpJyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiT3ZlcnJpZGVuIGhlYWRlcjoi
ICsgZGF0YS5oZWFkZXJzLnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlBv
c3REYXRhIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IHBvc3QgZGF0YSBp
bnRlcmNlcHRpb24iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRh
cmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0
Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1
cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2lu
dGVyY2VwdC1lY2hvLnBocD9wb3N0RGF0YSIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3Bl
Y3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVxdWVzdCA9IChldmVudCkg
PT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0g
ZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcXVlc3QudXJsLmluY2x1ZGVzKCc/
cG9zdERhdGEnKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
IHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICJQ
T1NUIiwKKyAgICAgICAgICAgICAgICAgICAgcG9zdERhdGE6IGJ0b2EoInZhbHVlPW92ZXJyaWRl
biIpLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJ
Lm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQu
UmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAgICAg
IGxldCByZXNwb25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuZXZhbHVhdGUoInBvc3RE
YXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP3Bvc3REYXRhJykiKTsKKyAgICAgICAg
ICAgIHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5hd2FpdFByb21pc2UocmVz
cG9uc2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsKKyAgICAgICAgICAgIGxldCBkYXRhID0gZXZh
bCgnKCcgKyByZXNwb25zZS5yZXN1bHQudmFsdWUgKyAnKScpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIk92ZXJyaWRlbiB2YWx1ZTogIiArIGRhdGEucG9zdC52YWx1ZSk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJl
cXVlc3QgaW50ZXJjZXB0aW9uIGFsdGVyaW5nIHJlcXVlc3QgcHJvcGVydGllcy48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
c3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNWY0ZTA3ZWZiNjI2YTNmYTNm
Y2U5NTZkM2M1MTFmOTgwMjNhYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRF
WFQKK0FMRVJUOiBPVkVSUklERU4gb3ZlcnJpZGUuanMgVEVYVAorVGVzdCByZXF1ZXN0IGludGVy
Y2VwdGlvbiBpbnRlcmNlcHRpbmcgdGhlIHN1YnJlc291cmNlIGxvYWQuCisKKworPT0gUnVubmlu
ZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2UKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0
aC1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI1NmE4MzhmODQxYmM1YjQzNDA3ZjY2
NDdhYWUwNjIzNWE1NDA0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1l
cnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitBTEVSVDogREVGQVVMVCBvdmVycmlk
ZS5qcyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggZXJyb3IgZm9yIHRoZSBz
dWJyZXNvdXJjZSBsb2FkLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRl
cmNlcHRSZXF1ZXN0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LlN1YnJlc291cmNlIHdpdGggZXJyb3IKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13
aXRoLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZGU0OWJhMGQ0MDAzNDY2ZDIyYmQyYWQ3YzA3MjI5NmIzYzZkY2ZkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IiKTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIGVycm9yIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJT
dWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggZXJyb3IiLAorICAgICAg
ICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFp
blRhcmdldCgpOworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRl
cmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLmpzIiwKKyAgICAgICAg
ICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdl
LlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKyAgICAKKyAgICAgICAgICAgIGxldCBpbnRlcmNl
cHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0
LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJn
ZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IuaW52b2tlKHsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBlcnJvclR5cGU6
IEluc3BlY3RvckJhY2tlbmQuTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5HZW5lcmFsLAorICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdElu
dGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAgICAgIGF3YWl0IElu
c3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxs
UmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggZXJyb3IgZm9y
IHRoZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJp
ZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNv
dXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNw
b25zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEzYWU4MjY1ZWE0OTI1ZWM5NWViY2VjOGFh
MWY3ZWZmNTNkNzU4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNw
b25zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitBTEVSVDogREVGQVVMVCBvdmVycmlk
ZS5qcyBURVhUCitBTEVSVDogT1ZFUlJJRERFTiBvdmVycmlkZS5qcyBURVhUCitUZXN0IHJlcXVl
c3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UgZm9yIHRoZSBzdWJyZXNvdXJjZSBsb2FkLgor
CisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0CistLSBS
dW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdp
dGggcmVzcG9uc2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1y
ZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWNkNTU4
MzEzOWUyNWJiOWI1ZWEyZGU5NDkxMDliYWI3MmMxNDA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1z
dWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVB
c3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UiKTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5TdWJyZXNvdXJjZSB3aXRoIHJlc3BvbnNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJT
dWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UiLAorICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgIEluc3BlY3RvclRlc3QuZGVidWcoKTsKKyAg
ICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAg
ICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7Cisg
ICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3
b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3Bl
Y3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVxdWVzdCA9IChldmVudCkg
PT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0g
ZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2Vw
dFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dElkLAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZTogInRleHQvamF2YXNjcmlwdCIsCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGBhbGVydCgiT1ZFUlJJRERFTiBvdmVycmlkZS5q
cyBURVhUIik7IFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJPdmVycmlkZUNvbnRl
bnREaWRMb2FkIik7YCwKKyAgICAgICAgICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2Us
CisgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAgICAgICBz
dGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSwKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRl
cmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisgICAgICAgICAgICBhd2FpdCBJbnNw
ZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJl
c291cmNlczogdHJ1ZX0pOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5hd2FpdEV2
ZW50KCJPdmVycmlkZUNvbnRlbnREaWRMb2FkIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdp
dGggcmVzcG9uc2UgZm9yIHRoZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJlNTVkNjE5MDFiZTFlNGFkMWFhZjc5ZTBhM2U3OTJjNTVkNzdhNTgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1y
ZXF1ZXN0LXN1YnJlc291cmNlLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1
aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2Vw
dGlvbiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0
V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwg
cmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdGFyZ2V0
Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2UoeworICAgICAgICAgICAg
ICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMiLAorICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0SWQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07
CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdv
cmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3Qp
OworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNh
Y2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAgICAgICAgICAg
YXdhaXQgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJPdmVycmlkZUNvbnRlbnREaWRMb2FkIik7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5U
ZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVzb3VyY2UgbG9h
ZC48L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NWNjMDAyYTg4ZDVlOTYzMTY1YTAwYWI5NmJjMTRiOTdkZGNiNzg5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgICAibWV0
aG9kIjogIjw/cGhwIGVjaG8gJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ107ID8+IiwKKyAgICAi
aGVhZGVycyI6IHsKKzw/cGhwIGZvcmVhY2ggKGdldGFsbGhlYWRlcnMoKSBhcyAkbmFtZSA9PiAk
dmFsdWUpIHsgPz4KKyAgICAgICAgIjw/cGhwIGVjaG8gJG5hbWU7ID8+IjogIjw/cGhwIGVjaG8g
JHZhbHVlOyA/PiIsCis8P3BocCB9ID8+IH0sCisgICAgInBvc3QiOiB7Cis8P3BocCBmb3JlYWNo
ICgkX1BPU1QgYXMgJG5hbWUgPT4gJHZhbHVlKSB7ID8+CisgICAgICAgICI8P3BocCBlY2hvICRu
YW1lOyA/PiI6ICI8P3BocCBlY2hvICR2YWx1ZTsgPz4iLAorPD9waHAgfSA/PgorICAgIH0sCit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVl
c3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTJkMjM3NjM1NTg2YWJiZjc1ZWM3
NDA4YzNlMWNjNmE4N2YwYjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJp
ZGVuLXBhZ2UuaHRtbApAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+PC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5PdmVycmlkZGVuIHBhZ2Ug
Y29udGVudDwvcD4KKyAgICAgICAgPHNjcmlwdD5hbGVydCgiUkVQTEFDRUQgSFRNTCBDT05URU5U
Iik7IFRlc3RQYWdlLmNvbXBsZXRlVGVzdCgpOzwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVx
dWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3OGVjNGUyNjExNTdkMzMwOTE5
YzEzMjg5OTk1NTc3OTg5MzdlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVy
cmlkZW4tc2NyaXB0LmpzCkBAIC0wLDAgKzEsMiBAQAorYWxlcnQoIk9WRVJSSURFTiBvdmVycmlk
ZS5qcyBURVhUIik7CitUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJpZGVD
b250ZW50RGlkTG9hZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcwppbmRleCBhMDI2NDlkNTZiZGIz
ZDI4NWMxZjBkN2Y4MDBjZmU0MTA4OTIyNjQxLi44MzFhNjFmNjc4NWU0NDg4YjEyZDdkZmRlZjFm
ZTY2ZDM3NTUxMjIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcwpAQCAtODcsMTIgKzg3LDE0IEBA
IFRlc3RQYWdlLnJ1blRlc3QgPSB3aW5kb3cucnVuVGVzdCA9IGZ1bmN0aW9uKCkKICAgICBpZiAo
dHlwZW9mIHRlc3RGdW5jdGlvbiAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICBhbGVydCgiRmFp
bGVkIHRvIHNlbmQgdGVzdCgpIGJlY2F1c2UgaXQgaXMgbm90IGEgZnVuY3Rpb24uIik7CiAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgbGV0IHVybCA9IHRlc3RSdW5uZXIuaW5zcGVjdG9yVGVzdFN0dWJVUkw7CiAgICAgaWYgKCF1
cmwpIHsKICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBvYnRhaW4gaW5zcGVjdG9yIHRlc3Qgc3R1
YiBVUkwuIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5Gcm9u
dGVuZChpbml0aWFsaXplcnMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ3
NjNiMzFlOGRlYjZjMmQwMjkyOGY2N2MzMWY3ZDdkMjgxYWFhYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uLgorCisKKz09
IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0CistLSBSdW5uaW5n
IHRlc3QgY2FzZTogc2V0VXAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrIHJlcXVlc3Qg
aW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0Q29udGludWUKK1Jlc3Bv
bnNlIGRhdGE6ICd7ImFscGhhIjoiYmV0YSIsImdhbW1hIjoxMjM0NX0nCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0
ZWQuaW50ZXJjZXB0V2l0aFJlcXVlc3QKK3RleHQ6IGludGVyY2VwdGVkIHJlcXVlc3QKKworCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVz
dEludGVyY2VwdGVkLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UKK3RleHQ6IGludGVyY2Vw
dGVkIGRhdGEKK3N0YXR1czogMjAwCitzdGF0dXNUZXh0OiBPSworbWltZVR5cGU6IGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbQorbXktaGVhZGVyOiBteS12YWx1ZQorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmlu
dGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IKK1JlcXVlc3QgZXJyb3I6ICdSZXF1ZXN0IGNhbmNlbGVk
JworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTNjNTYyZTE0ZTE2ODZkYjY4ODYyMjk4ZmE4NmYzMzE4
YjRmNDljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QuaHRtbApAQCAtMCwwICsxLDE3NyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSgpIHsKKyAgICB0cnkg
eworICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgncmVzb3VyY2VzL2RhdGEuanNv
bicpOworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdGV4dDogYXdhaXQgcmVzcG9uc2Uu
dGV4dCgpLAorICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsCisgICAgICAgICAg
ICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LAorICAgICAgICAgICAgbWltZVR5cGU6
IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSwKKyAgICAgICAgICAgIGhlYWRl
cjogcmVzcG9uc2UuaGVhZGVycy5nZXQoJ215LWhlYWRlcicpLAorICAgICAgICB9OworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIGUubWVzc2FnZTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IFByb3RvY29sVGVzdC5jcmVhdGVBc3luY1N1
aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QiKTsKKworICAgIGZ1bmN0aW9uIHByaW50RmV0
Y2hSZXN1bHQocmVzdWx0KQorICAgIHsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygidGV4dDog
IiArIHJlc3VsdC50ZXh0KTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygic3RhdHVzOiAiICsg
cmVzdWx0LnN0YXR1cyk7CisgICAgICAgIFByb3RvY29sVGVzdC5sb2coInN0YXR1c1RleHQ6ICIg
KyByZXN1bHQuc3RhdHVzVGV4dCk7CisgICAgICAgIFByb3RvY29sVGVzdC5sb2coIm1pbWVUeXBl
OiAiICsgcmVzdWx0Lm1pbWVUeXBlKTsKKyAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygibXktaGVh
ZGVyOiAiICsgcmVzdWx0LmhlYWRlcik7CisgICAgfQorCisgICAgbGV0IHVybDsKKyAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJzZXRVcCIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBsZXQgW3Jlc3VsdDEsIHJlc3VsdDIsIHtyZXN1bHR9XSA9IGF3
YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2Fp
dENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuZW5hYmxlIiwgcGFyYW1zOiB7fX0pLAorICAgICAg
ICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGlt
ZS5lbmFibGUiLCBwYXJhbXM6IHt9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9j
b2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246ICJkb2N1bWVudC5VUkwiLAorICAgICAgICAg
ICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1h
bmQoe21ldGhvZDogIk5ldHdvcmsuc2V0SW50ZXJjZXB0aW9uRW5hYmxlZCIsIHBhcmFtczogewor
ICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLAorICAgICAgICAgICAgICAgIH19KSwK
KyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICBsZXQgYmFzZVVSTCA9IHJlc3VsdC52YWx1
ZS5zdWJzdHJpbmcoMCwgcmVzdWx0LnZhbHVlLmxhc3RJbmRleE9mKCIvIikpOworICAgICAgICAg
ICAgdXJsID0gYmFzZVVSTCArICIvcmVzb3VyY2VzL2RhdGEuanNvbiI7CisgICAgICAgICAgICBh
d2FpdCBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuYWRk
SW50ZXJjZXB0aW9uIiwgcGFyYW1zOiB7IHVybCwgc3RhZ2U6ICJyZXF1ZXN0IiB9fSk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
Ik5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNl
cHRDb250aW51ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBjb250aW51ZSBpbnRlcmNl
cHRlZCByZXF1ZXN0LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBG
ZXRjaCBVUkwgYW5kIGludGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRQ
cm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUu
ZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImZl
dGNoRGF0YSgpIiwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRl
ZCJ9KSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAvLyBMZXQgdGhlIGxvYWQgY29u
dGludWUuCisgICAgICAgICAgICBsZXQgW2ZldGNoUmVzdWx0XSA9IGF3YWl0IFByb21pc2UuYWxs
KFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhv
ZDogIlJ1bnRpbWUuYXdhaXRQcm9taXNlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAg
IHByb21pc2VPYmplY3RJZDogZmV0Y2hSZXN1bHRQcm9taXNlLnJlc3VsdC5vYmplY3RJZCwKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9
fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRo
b2Q6ICJOZXR3b3JrLmludGVyY2VwdENvbnRpbnVlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAg
ICAgICAgICAgICAgICAgICBzdGFnZTogInJlcXVlc3QiLAorICAgICAgICAgICAgICAgIH19KSwK
KyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUmVzcG9uc2Ug
ZGF0YTogJyIgKyBmZXRjaFJlc3VsdC5yZXN1bHQudmFsdWUudGV4dC50cmltKCkgKyAiJyIpOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50
ZXJjZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZnVsZmlsbCBp
bnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggcmVzcG9uc2UuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgp
IHsKKyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAgICAg
ICAgbGV0IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJv
bWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFu
ZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAg
ICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiLAorICAgICAgICAgICAgICAgIH19KSwKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdv
cmsucmVxdWVzdEludGVyY2VwdGVkIn0pLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAg
IC8vIEZ1bGZpbGwgdGhlIHJlcXVlc3Qgd2l0aCBkYXRhLgorICAgICAgICAgICAgbGV0IFtmZXRj
aFJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
UHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmF3YWl0UHJvbWlzZSIsIHBh
cmFtczogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0
UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAgICAgICAgICAgIHJldHVybkJ5VmFs
dWU6IHRydWUsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3Rv
clByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVx
dWVzdCIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2Vw
dGVkRXZlbnQucGFyYW1zLnJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwu
cmVwbGFjZSgnZGF0YS5qc29uJywgJ2RhdGEtaW50ZXJjZXB0ZWQuanNvbicpLAorICAgICAgICAg
ICAgICAgIH19KSwKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0Lmxv
ZygidGV4dDogIiArIGZldGNoUmVzdWx0LnJlc3VsdC52YWx1ZS50ZXh0KTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29y
ayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFJlcXVl
c3RXaXRoUmVzcG9uc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZnVsZmlsbCBpbnRl
cmNlcHRlZCByZXF1ZXN0IHdpdGggcmVzcG9uc2UuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsK
KyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJjZXB0IGl0LgorICAgICAgICAgICAg
bGV0IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlz
ZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7
bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAg
ICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsu
cmVxdWVzdEludGVyY2VwdGVkIn0pLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIC8v
IEZ1bGZpbGwgdGhlIHJlcXVlc3Qgd2l0aCBkYXRhLgorICAgICAgICAgICAgbGV0IFtmZXRjaFJl
c3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJv
dG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmF3YWl0UHJvbWlzZSIsIHBhcmFt
czogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJv
bWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAgICAgICAgICAgIHJldHVybkJ5VmFsdWU6
IHRydWUKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJv
dG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRo
UmVzcG9uc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRl
cmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1
czogMjAwLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAg
ICAgICAgICAgICBoZWFkZXJzOiB7ICJteS1oZWFkZXIiOiAibXktdmFsdWUiIH0sCisgICAgICAg
ICAgICAgICAgICAgIG1pbWVUeXBlOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKKyAgICAg
ICAgICAgICAgICAgICAgY29udGVudDogYnRvYSgiaW50ZXJjZXB0ZWQgZGF0YSIpLAorICAgICAg
ICAgICAgICAgICAgICBiYXNlNjRFbmNvZGVkOiB0cnVlLAorICAgICAgICAgICAgICAgIH19KSwK
KyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgcHJpbnRGZXRjaFJlc3VsdChmZXRjaFJlc3Vs
dC5yZXN1bHQudmFsdWUpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1
ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdCBhYm9ydCBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGggZXJyb3IuIiwKKyAg
ICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIC8vIEZldGNoIFVSTCBhbmQgaW50ZXJj
ZXB0IGl0LgorICAgICAgICAgICAgbGV0IFtmZXRjaFJlc3VsdFByb21pc2UsIGludGVyY2VwdGVk
RXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclBy
b3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczog
eworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCkiLAorICAgICAg
ICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2
ZW50KHtldmVudDogIk5ldHdvcmsucmVxdWVzdEludGVyY2VwdGVkIn0pLAorICAgICAgICAgICAg
XSk7CisKKyAgICAgICAgICAgIC8vIEFib3J0IHRoZSByZXF1ZXN0IGFzIGNhbmNlbGVkLgorICAg
ICAgICAgICAgbGV0IFtmZXRjaFJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1l
LmF3YWl0UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlT2Jq
ZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAg
ICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAg
ICAgICAgICAgICAgICBlcnJvclR5cGU6ICJDYW5jZWxsYXRpb24iLAorICAgICAgICAgICAgICAg
IH19KSwKKyAgICAgICAgICAgIF0pOworICAgICAgICAgICAgUHJvdG9jb2xUZXN0LmxvZygiUmVx
dWVzdCBlcnJvcjogJyIgKyBmZXRjaFJlc3VsdC5yZXN1bHQudmFsdWUgKyAiJyIpOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1
ZXN0IGludGVyY2VwdGlvbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51
ZS1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVz
b3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbAppbmRleCA0NDgwNjQyMDA0NDc2
OTdmYjA3ZjQxNmU5Nzg2Mzk4ZTAwM2QyNDYwLi4xYzRjYmUxNDZjN2FjYWViYzRhYjk0MTc4ZGVl
NDUyYWU3ZDdmNDQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9s
b2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVl
LXJlc3BvbnNlLmh0bWwKQEAgLTM0LDcgKzM0LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgICAgIFByb3RvY29sVGVzdC5hd2FpdEV2ZW50KCJUZXN0VVJMIiksCiAgICAgICAgICAg
ICAgICAgUHJvdG9jb2xUZXN0LmV2YWx1YXRlSW5QYWdlKGBnZXRVUkwoKWApLAogICAgICAgICAg
ICAgXSk7Ci0gICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQo
e21ldGhvZDogIk5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIiwgcGFyYW1zOiB7dXJsOiBldmVudC5k
YXRhLnVybCwgc3RhZ2U6ICJyZXNwb25zZSJ9fSk7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0
b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuYWRkSW50ZXJjZXB0aW9u
IiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgdXJsOiBldmVudC5kYXRhLnVybCwKKyAgICAg
ICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0
YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgfX0pOwogCiAgICAgICAgICAgICAvLyBGZXRjaCBV
UkwgYW5kIGludGVyY2VwdCBpdC4KICAgICAgICAgICAgIGxldCBbbWVzc2FnZU9iamVjdF0gPSBh
d2FpdCBQcm9taXNlLmFsbChbCkBAIC00NiwxMiArNDksMTUgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgICAgICAvLyBMZXQgdGhlIGxvYWQgY29udGludWUuCiAgICAgICAgICAgICBhd2FpdCBQ
cm9taXNlLmFsbChbCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVu
dCh7ZXZlbnQ6ICJOZXR3b3JrLnJlc3BvbnNlUmVjZWl2ZWQifSksCi0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2Vw
dENvbnRpbnVlIiwgcGFyYW1zOiB7cmVxdWVzdElkOiBtZXNzYWdlT2JqZWN0LnBhcmFtcy5yZXF1
ZXN0SWR9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5k
KHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdENvbnRpbnVlIiwgcGFyYW1zOiB7cmVxdWVzdElk
OiBtZXNzYWdlT2JqZWN0LnBhcmFtcy5yZXF1ZXN0SWQsIHN0YWdlOiAicmVzcG9uc2UifX0pLAog
ICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICBQcm90b2NvbFRlc3QucGFzcygiUmVzcG9uc2Ug
cmVjZWl2ZWQuIik7CiAKICAgICAgICAgICAgIC8vIFJlbW92ZSBvdmVycmlkZS4KLSAgICAgICAg
ICAgIGF3YWl0IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29y
ay5yZW1vdmVJbnRlcmNlcHRpb24iLCBwYXJhbXM6IHt1cmw6IGV2ZW50LmRhdGEudXJsLCBzdGFn
ZTogInJlc3BvbnNlIn19KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclByb3RvY29sLmF3
YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5yZW1vdmVJbnRlcmNlcHRpb24iLCBwYXJhbXM6
IHsKKyAgICAgICAgICAgICAgICB1cmw6IGV2ZW50LmRhdGEudXJsLAorICAgICAgICAgICAgICAg
IHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9u
c2UsCisgICAgICAgICAgICB9fSk7CiAgICAgICAgIH0KICAgICB9KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400973</attachid>
            <date>2020-06-03 15:43:03 -0700</date>
            <delta_ts>2020-06-03 15:56:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200603154302.patch</filename>
            <type>text/plain</type>
            <size>89218</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YjBmYTIwZmE0MWJiOWQ3YzU2ODhlOWUzODk5YzZjYTA3MTFkZWQ1Li5jNTY1N2Y3MmM4YmNiNGY1
MTIwYTM3MTY2ZTk3ZjJkODljNDcwZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0wMyAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cCBuZWVkcyB0byAjaW5jbHVkZSBPcGVyYW5kc0lubGluZXMuaC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNmU0
MzdjODg3ODE1ZWVjNjg5YmIyNDQwYWMzYTcxNDE5MzZiOTM0Li4zMmJlZmQyODRhYjIwYzVjNWI2
YWIzNGRhZDQ5MWFkZDQwMTM2ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAt
MDYtMDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJv
ZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAg
ICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qg
bm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3Ig
ZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVl
c3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJ
bnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbElu
dGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVx
dWVzdDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0wNi0wMyAgUm9iIEJ1
aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIERpc2FsbG93IHJlc3BvbnNlcyB3aGVu
IGEgcmVzcG9uc2UgY29udGFpbnMgaW52YWxpZCBoZWFkZXIgdmFsdWVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZwppbmRleCA3M2Q1Zjg4OTRhYjFiNzMxMmFiNWJjZTg4YjdlNzIwYmI2NDBkYTg3Li4y
M2NhYWU1MmY1M2IyYzA3NDY5MWRiZDNmZTUyM2ZkYWQ1ZmE4OTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgIDxwYXZlbC5mZWxk
bWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVz
dCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlv
biB0byB0aGUgTmV0d29yayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdv
cmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJl
IGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4g
bm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanM6CisgICAg
ICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6ZVRhcmdldCk6CisgICAg
ICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuYWRkTG9jYWxSZXNvdXJjZU92ZXJyaWRl
KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVMb2NhbFJlc291
cmNlT3ZlcnJpZGUpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlcXVl
c3RJbnRlcmNlcHRlZCk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVz
cG9uc2VJbnRlcmNlcHRlZCk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUu
X2hhbmRsZVJlc291cmNlT3ZlcnJpZGVEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzOgorICAgICAgICAoV0kuTmV0d29y
a09ic2VydmVyLnByb3RvdHlwZS5yZXF1ZXN0SW50ZXJjZXB0ZWQpOgorCiAyMDIwLTA2LTAxICBE
ZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBHcmFwaGljczogc2hvdWxkIHVzZSB0aGUgYGlkYCAobmFtZSkgb2YgdGhlIGFuaW1hdGlvbiBp
ZiBpdCBleGlzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjVhODgwNTQzZGFiMWQxOTM4NTQ4MGIyMDQ1MmE5MWY4
ZDNhNWJjMi4uYjY3NjQwZGQxOTk3NTFjYjdjMTRiYmZkNzM4YjM3OTU0NmI0NGM1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZl
bGRtYW5AZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1
ZXN0IGludGVyY2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0
aW9uIHRvIHRoZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0
d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4g
YmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNh
biBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisKIDIwMjAtMDYt
MDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gSGlk
ZSB0aGUgUGlQIGJ1dHRvbiBpbiBmdWxsc2NyZWVuIG1vZGUgaWYgUGlQIGlzIGRpc2FibGVkIGlu
IHByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL05ldHdvcmsuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvTmV0d29yay5qc29uCmluZGV4IGYyNDI1ZGQ2YWZjMGVmYmYxZDExNTIyMGZkNDI0
NmFmZTJmYjkyZTEuLmZmODRmY2EwZmVhNWQyYWRlODM1NzQ3OThmMTllMDljOWQ3YTYxNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29y
ay5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0
d29yay5qc29uCkBAIC0xNTUsNyArMTU1LDEzIEBACiAgICAgICAgICAgICAiaWQiOiAiTmV0d29y
a1N0YWdlIiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRGlmZmVyZW50IHN0YWdlcyBvZiBhIG5ldHdvcmsgcmVxdWVzdC4iLAotICAg
ICAgICAgICAgImVudW0iOiBbInJlc3BvbnNlIl0KKyAgICAgICAgICAgICJlbnVtIjogWyJyZXF1
ZXN0IiwgInJlc3BvbnNlIl0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlk
IjogIlJlc291cmNlRXJyb3JUeXBlIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlmZmVyZW50IHN0YWdlcyBvZiBhIG5ldHdvcmsg
cmVxdWVzdC4iLAorICAgICAgICAgICAgImVudW0iOiBbIkdlbmVyYWwiLCAiQWNjZXNzQ29udHJv
bCIsICJDYW5jZWxsYXRpb24iLCAiVGltZW91dCJdCiAgICAgICAgIH0KICAgICBdLAogICAgICJj
b21tYW5kcyI6IFsKQEAgLTI0NCwxMCArMjUwLDEwIEBACiAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiQWRkIGFuIGludGVyY2VwdGlvbi4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVzIjog
WyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgcGF0dGVy
biB0byBpbnRlcmNlcHQsIGludGVyY2VwdCBldmVyeXRoaW5nIGlmIG5vdCBzcGVjaWZpZWQgb3Ig
ZW1wdHkiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5l
dHdvcmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0byBpbnRlcmNlcHQuIiB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FzZVNlbnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4i
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0
dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJhbWV0ZXIuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIg
ZXhwcmVzc2lvbi4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVm
IjogIk5ldHdvcmtTdGFnZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBu
b3QgcHJlc2VudCB0aGlzIGFwcGxpZXMgdG8gYWxsIG5ldHdvcmsgc3RhZ2VzLiIgfQorICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRl
ciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwK
ICAgICAgICAgewpAQCAtMjU2LDE3ICsyNjIsMjkgQEAKICAgICAgICAgICAgICJ0YXJnZXRUeXBl
cyI6IFsicGFnZSJdLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6
ICJTdGFnZSB0byBpbnRlcmNlcHQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2Fz
ZVNlbnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJhbWV0
ZXIuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJv
b2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRz
IGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0sCi0gICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0aGlzIGFwcGxpZXMgdG8g
YWxsIG5ldHdvcmsgc3RhZ2VzLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdl
eCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
SWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4i
IH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5h
bWUiOiAiaW50ZXJjZXB0Q29udGludWUiLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNv
bnRpbnVlIGFuIGludGVyY2VwdGlvbiB3aXRoIG5vIG1vZGlmaWNhdGlvbnMuIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJDb250aW51ZSByZXF1ZXN0IG9yIHJlc3BvbnNlIHdpdGhvdXQg
bW9kaWZpY2F0aW9ucy4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdlIl0sCiAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJl
cXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVy
IGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRp
bnVlLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAi
UmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRl
ZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAiZGVzY3Jp
cHRpb24iOiAiU3RhZ2UgdG8gY29udGludWUuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdFdpdGhSZXF1ZXN0IiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYWNlIGludGVyY2VwdGVkIHJlcXVlc3Qg
d2l0aCB0aGUgcHJvdmlkZWQgb25lLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIs
ICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayBy
ZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm1ldGhvZCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsImRlc2Ny
aXB0aW9uIjogIkhUVFAgcmVxdWVzdCBtZXRob2QuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwiZGVzY3JpcHRp
b24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJo
ZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMg
aWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3N0RGF0YSIs
ICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQ
IFBPU1QgcmVxdWVzdCBkYXRhLCBiYXNlNjQtZW5jb2RlZC4iIH0KICAgICAgICAgICAgIF0KICAg
ICAgICAgfSwKICAgICAgICAgewpAQCAtMjgyLDYgKzMwMCwyNyBAQAogICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0LiBQYXNzIHRocm91
Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMiLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRocm91Z2ggb3JpZ2lu
YWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9u
c2UiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgcmVzcG9uc2UgZm9yIGFu
IGludGVyY2VwdGVkIHJlcXVlc3QuIFJlcXVlc3QgY29tcGxldGVseSBieXBhc3NlcyB0aGUgbmV0
d29yayBpbiB0aGlzIGNhc2UgYW5kIGlzIGltbWVkaWF0ZWx5IGZ1bGZpbGxlZCB3aXRoIHRoZSBw
cm92aWRlZCBkYXRhLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlw
dGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXNwb25zZSB0
byBtb2RpZnkuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBl
IjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2NEVuY29kZWQi
LCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNvbnRlbnQgd2Fz
IHNlbnQgYXMgYmFzZTY0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1pbWVUeXBl
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk1JTUUgVHlwZSBmb3IgdGhlIGRh
dGEuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzIiwgInR5cGUiOiAiaW50
ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlLiBQYXNzIHRo
cm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6
ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0LiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVz
IGlmIHVubW9kaWZpZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVycyIs
ICIkcmVmIjogIkhlYWRlcnMiLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJz
LiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVy
Y2VwdFJlcXVlc3RXaXRoRXJyb3IiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZhaWwg
cmVxdWVzdCB3aXRoIGdpdmVuIGVycm9yIHR5cGUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVx
dWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBO
ZXR3b3JrIHJlcXVlc3QgdG8gZmFpbC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJl
cnJvclR5cGUiLCAiJHJlZiI6ICJSZXNvdXJjZUVycm9yVHlwZSIsICJkZXNjcmlwdGlvbiI6ICJE
ZWxpdmVyIGVycm9yIHJlYXNvbiBmb3IgdGhlIHJlcXVlc3QgZmFpbHVyZS4iIH0KKyAgICAgICAg
ICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImV2ZW50cyI6IFsKQEAgLTM1Nyw5ICszOTYs
MTcgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc291cmNlIiwgIiRyZWYiOiAiQ2Fj
aGVkUmVzb3VyY2UiLCAiZGVzY3JpcHRpb24iOiAiQ2FjaGVkIHJlc291cmNlIGRhdGEuIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjog
InJlcXVlc3RJbnRlcmNlcHRlZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQg
d2hlbiBIVFRQIHJlcXVlc3QgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0
IHJlc3BvbmQgd2l0aCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdENvbnRpbnVlPC9jb2RlPiwgPGNv
ZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdDwvY29kZT5gIG9yIDxjb2RlPk5ldHdvcmsu
aW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2RlPmAgdG8gcmVzb2x2ZSB0aGlzIHJlcXVlc3QuIiwK
KyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZp
ZXIgZm9yIHRoaXMgaW50ZXJjZXB0ZWQgbmV0d29yay4gQ29ycmVzcG9uZHMgd2l0aCBhbiBlYXJs
aWVyIDxjb2RlPk5ldHdvcmsucmVxdWVzdFdpbGxCZVNlbnQ8L2NvZGU+LiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInJlcXVlc3QiLCAiJHJlZiI6ICJSZXF1ZXN0IiwgImRlc2NyaXB0
aW9uIjogIk9yaWdpbmFsIHJlcXVlc3QgY29udGVudCB0aGF0IHdvdWxkIHByb2NlZWQgaWYgdGhp
cyBpcyBjb250aW51ZWQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAgIHsK
ICAgICAgICAgICAgICJuYW1lIjogInJlc3BvbnNlSW50ZXJjZXB0ZWQiLAotICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXNwb25zZSBoYXMgYmVlbiBpbnRlcmNl
cHRlZC4gVGhlIGZyb250ZW5kIG11c3QgcmVzcG9uc2Ugd2l0aCA8Y29kZT5OZXR3b3JrLmludGVy
Y2VwdENvbnRpbnVlPC9jb2RlPiBvciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25z
PC9jb2RlPmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXNwb25zZSBoYXMgYmVlbiBpbnRlcmNlcHRlZC4g
VGhlIGZyb250ZW5kIG11c3QgcmVzcG9uc2Ugd2l0aCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdENv
bnRpbnVlPC9jb2RlPiBvciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZTwvY29k
ZT5gIHRvIGNvbnRpbnVlIHRoaXMgcmVzcG9uc2UuIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBl
cyI6IFsicGFnZSJdLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRp
b24iOiAiSWRlbnRpZmllciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25k
cyB3aXRoIGFuIGVhcmxpZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4u
IiB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAppbmRleCBiMGQ3NjY0YTBhMGI2MDQ5MjQwOWVkNTlhYTMwOTIzNjdmNmRk
YTY4Li4wZjBmMmExMzZlY2MzZGQ1NDY4OTNkY2FjOTUwMzI5ZDYyMWI2YjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cApAQCAtODEyLDEwICs4MTIsMTcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJiBjYWMKICAgICB9CiB9
CiAKLWJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJ
bnRlcmNlcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0Fn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKLSAgICAg
ICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7Cisg
ICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
SW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmIChhdXRvKiBu
ZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgp
KQorICAgICAgICByZXR1cm4gbmV0d29ya0FnZW50LT5zaG91bGRJbnRlcmNlcHRSZXF1ZXN0KHJl
cXVlc3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtODI2LDYgKzgzMywxMiBAQCBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQoreworICAg
IGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5l
dHdvcmtBZ2VudCgpKQorICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJlcXVlc3QobG9h
ZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0byog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAppbmRleCBjN2I2NmJhMTE1NWQ5MWIzYzVlMGUzMTJlMTRiZDJmZTczMjg2ZDI1Li5k
ZjkzOTA1YjQ1YmFlNGM3NGE3MWQxZWFlODljMTI1ZTAxODNhMjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2
ICs0NSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2Vi
QW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKQEAgLTIzNCw4
ICsyMzUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lD
YWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbElu
dGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZElu
dGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBz
dGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtNDQyLDggKzQ0NSwxMCBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2Fj
aGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3Rh
dGljIGJvb2wgd2lsbEludGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsK
QEAgLTEyNTcsMTEgKzEyNjIsMTkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJgogICAgIHdpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJv
b2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdp
bGxJbnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7Cisg
ICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVx
dWVzdCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCByZXF1ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyNzMsNiArMTI4Niwx
MyBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KCpsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVl
c3QoKSkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckZyYW1lKGxvYWRlci5mcmFtZSgpKSkKKyAgICAgICAgaW50ZXJjZXB0UmVxdWVz
dEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9
CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZShmcmFtZSwgcmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXggOTU0YWFmMTIx
YTlmYTUwN2Q4M2JjMTBhZTM3ZGUxZjEyOGY3ZGNmYy4uZTM4ZWYzOThlN2U5YWZjMWUwMWE1NGI5
Y2U2OGZjMjM1OThlOTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMwLDExICszMCwy
MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZy
YW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChmcmFtZSwgcmVxdWVz
dCk7Cit9CisKIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9u
c2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4
IGI2N2U4OWI4MGI0ZTdhODU4NmNhYzgxYWRlNWQ1OGExYmNiMGQ0MzEuLmEzMmY4NzdlYWEwNGYy
N2QxMjEyNzBjZmY1YWNjM2IwMzJjMWM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDE0
ICszNiwyNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wg
c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1l
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25z
dCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgc2hvdWxk
SW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKK2lu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0
UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOworICAgIGlmICgh
ZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNl
cHRSZXF1ZXN0SW50ZXJuYWwoKmZyYW1lLCByZXF1ZXN0KTsKK30KKwogaW5saW5lIGJvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25z
dCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CkBAIC01Myw2ICs2NiwxMiBAQCBp
bmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lKgogICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZUludGVybmFsKCpmcmFtZSwgcmVzcG9uc2UpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxv
YWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBo
YW5kbGVyKQoreworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNo
b3VsZEludGVyY2VwdFJlcXVlc3QobG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsK
KyAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
K30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZElu
dGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4
IGFmY2RkMmE3ZmFmZmUwYmVjOTgyMDcyZDg5NGJjODVjNmUzMGM0NGMuLjZmMDMyYzcwZTU2YWZh
M2JkNGM1ZjgwNWZmNDBhMDczNGVjMzhmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9y
bURhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgpAQCAtODQxLDEyICs4NDIsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQogICAgIG1fcmVzb3VyY2Vz
RGF0YS0+Y2xlYXIoKTsKICAgICBtX2V4dHJhUmVxdWVzdEhlYWRlcnMuY2xlYXIoKTsKIAorICAg
IGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgY29udGludWVQZW5kaW5nUmVzcG9uc2Vz
KCk7CiAKICAgICBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChmYWxzZSk7CiB9CiAKLWJvb2wg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKK2Jvb2wgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCwgTmV0d29ya1N0YWdl
IG5ldHdvcmtTdGFnZSkKIHsKICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAK
QEAgLTg1NSw2ICs4NTcsMTAgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZElu
dGVyY2VwdChVUkwgdXJsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8m
IGludGVyY2VwdCA6IG1faW50ZXJjZXB0cykgeworICAgICAgICBpZiAoaW50ZXJjZXB0Lm5ldHdv
cmtTdGFnZSAhPSBuZXR3b3JrU3RhZ2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKGludGVyY2VwdC51cmwuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9IGludGVyY2VwdC5pc1JlZ2V4ID8gQ29udGVu
dFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6UmVnZXggOiBDb250ZW50U2VhcmNo
VXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpFeGFjdFN0cmluZzsKICAgICAgICAgYXV0byBy
ZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVJlZ3VsYXJFeHByZXNzaW9uRm9y
U2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlLCBzZWFy
Y2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJlZ2V4Lm1hdGNoKHVybFN0cmluZykgIT0gLTEp
CkBAIC04NjQsNiArODcwLDEzIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJ
bnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpCit7CisgICAgZm9yIChhdXRv
JiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnZhbHVlcygpKQor
ICAgICAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxSZXF1ZXN0KCk7Cisg
ICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwogdm9pZCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7CiAgICAgZm9yIChh
dXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZXMudmFsdWVzKCkpCkBAIC0xMDI5LDE4ICsxMDQyLDE4IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Ym9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCi0gICAgaWYgKCFt
X2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpIHsK
KyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAgY29udGludWVQZW5k
aW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9u
YWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNv
bnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1Jl
Z2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3
b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0
YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsK
LSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3Rh
Z2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3Bl
Y3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFu
ZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3du
IG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNDksMjEgKzEwNjIsMTgg
QEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRp
dmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgpCiAg
ICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRlcmNlcHQubmV0d29y
a1N0YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5h
cHBlbmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCi0gICAgICAgIGVycm9yU3RyaW5nID0gIklu
dGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVhZHkgZXhpc3RzIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcmNlcHQgZm9yIGdpdmVuIHVybCwgZ2l2ZW4g
aXNSZWdleCBhbmQgZ2l2ZW4gc3RhZ2UgYWxyZWFkeSBleGlzdHMiX3M7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpyZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0
YWdlU3RyaW5nKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlv
bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgpCiB7Ci0gICAgaWYgKG5ldHdvcmtTdGFnZVN0
cmluZykgewotICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAg
ICAgICBpZiAoIW5ldHdvcmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtl
U3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0YWdlU3RyaW5nKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIGF1dG8gbmV0d29ya1N0YWdlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4obmV0d29y
a1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtTdGFnZSkgeworICAgICAgICBlcnJvclN0
cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFn
ZVN0cmluZyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBJbnRlcmNlcHQgaW50ZXJj
ZXB0OwpAQCAtMTA3MiwxOSArMTA4MiwyNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUwogICAg
ICAgICBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSA9ICpvcHRpb25hbENhc2VTZW5zaXRpdmU7CiAg
ICAgaWYgKG9wdGlvbmFsSXNSZWdleCkKICAgICAgICAgaW50ZXJjZXB0LmlzUmVnZXggPSAqb3B0
aW9uYWxJc1JlZ2V4OwotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgaW50ZXJjZXB0aW5nIHJlcXVl
c3RzLgorICAgIGludGVyY2VwdC5uZXR3b3JrU3RhZ2UgPSBuZXR3b3JrU3RhZ2UudmFsdWUoKTsK
IAogICAgIGlmICghbV9pbnRlcmNlcHRzLnJlbW92ZUFsbChpbnRlcmNlcHQpKQogICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIGludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBp
c1JlZ2V4Il9zOwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2Vw
dFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtT
dGFnZTo6UmVxdWVzdCkKKyAgICAgICAgfHwgc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCks
IE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UpOworfQorCitib29sIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSk7CisgICAgcmV0
dXJuIHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3Qp
OwogfQogCiBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkyLDcgKzExMTAsMjEg
QEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxl
ZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChy
ZXNwb25zZS51cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwo
KSwgTmV0d29ya1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBB
U1NFUlQobV9lbmFibGVkKTsKKyAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKKwor
ICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChsb2Fk
ZXIuaWRlbnRpZmllcigpKTsKKyAgICBpZiAobV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY29u
dGFpbnMocmVxdWVzdElkKSkgeworICAgICAgICBoYW5kbGVyKGxvYWRlci5yZXF1ZXN0KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNl
dChyZXF1ZXN0SWQsIG1ha2VVbmlxdWU8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+KCZsb2FkZXIs
IFdURk1vdmUoaGFuZGxlcikpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdElu
dGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVy
LnJlcXVlc3QoKSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCkBAIC0xMTEyLDE1ICsxMTQ0LDY5
IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVz
cG9uc2VJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25z
ZShyZXNwb25zZSwgbnVsbHB0cikpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
aW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZykKIHsKLSAgICBhdXRvIHBlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7
Ci0gICAgaWYgKCFwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKLSAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVz
dElkIl9zOworICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5z
cGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAo
IW5ldHdvcmtTdGFnZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25v
d24gbmV0d29ya1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG5ldHdvcmtTdGFnZS52YWx1ZSgpKSB7CisgICAgY2Fz
ZSBOZXR3b3JrU3RhZ2U6OlJlcXVlc3Q6CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gcGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJl
cXVlc3RJZCk7CisgICAgICAgICAgICBpZiAocGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpCisgICAg
ICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlcXVlc3QtPmNvbnRpbnVlV2l0aE9yaWdpbmFs
UmVxdWVzdCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgY2FzZSBOZXR3b3JrU3Rh
Z2U6OlJlc3BvbnNlOgorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHBlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7
CisgICAgICAgICAgICBpZiAocGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKQorICAgICAgICAgICAg
ICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNl
KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJl
cXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nKiBtZXRob2QsIGNvbnN0IFN0cmluZyogdXJsLCBjb25zdCBKU09OOjpPYmpl
Y3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBwZW5kaW5n
UmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAg
ICBpZiAocGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9
IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QgPSBsb2FkZXItPnJlcXVlc3QoKTsKKyAgICAgICAgaWYgKHVybCkKKyAgICAgICAg
ICAgIHJlcXVlc3Quc2V0VVJMKFVSTCh7IH0sICp1cmwpKTsKKyAgICAgICAgaWYgKG1ldGhvZCkK
KyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgqbWV0aG9kKTsKKyAgICAgICAgaWYg
KGhlYWRlcnMpIHsKKyAgICAgICAgICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOwor
ICAgICAgICAgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiAqaGVhZGVycykgeworICAgICAg
ICAgICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUt
PmFzU3RyaW5nKGhlYWRlclZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRIZWFk
ZXJzLmFkZChrZXksIGhlYWRlclZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAg
ICAgICB9CisgICAgICAgIGlmIChwb3N0RGF0YSkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcjsKKyAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKCpwb3N0RGF0YSwgYnVm
ZmVyKSkgeworICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUg
Z2l2ZW4gcG9zdERhdGEiX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKGJ1ZmZl
cikpOworICAgICAgICB9CisgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5jb250aW51ZVdpdGhSZXF1
ZXN0KHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlLT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKKyAgICBlcnJvclN0
cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVl
c3RJZCJfczsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhS
ZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5n
KiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQpAQCAtMTE2Niw2ICsxMjUyLDkxIEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zCiAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25k
KG92ZXJyaWRlUmVzcG9uc2UsIG92ZXJyaWRlRGF0YSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwg
Ym9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBj
b25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykKK3sK
KyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFr
ZShyZXF1ZXN0SWQpOworICAgIGlmICghcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1
ZXN0SWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8UmVzb3VyY2VM
b2FkZXI+IGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICBpZiAo
IWxvYWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0
byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
aWYgKGJhc2U2NEVuY29kZWQpIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAg
ICAgICAgaWYgKCFiYXNlNjREZWNvZGUoY29udGVudCwgYnVmZmVyKSkgeworICAgICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBjb250ZW50Il9zOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5n
dGgoKSk7CisKKyAgICAvLyBNaW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9yIC0gcmVwb3J0IGRp
ZFJlY2VpdmVSZXNwb25zZSAmIGRpZEZpbmlzaExvYWRpbmcuCisgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZShwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXItPnVybCgpLCBtaW1lVHlwZSwgZGF0
YS0+c2l6ZSgpLCBTdHJpbmcoKSk7CisgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVz
cG9uc2U6OlNvdXJjZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOworICAgIHJlc3BvbnNlLnNldEhUVFBT
dGF0dXNDb2RlKHN0YXR1cyk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoc3RhdHVz
VGV4dCk7CisgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAgZm9yIChhdXRv
JiBoZWFkZXIgOiBoZWFkZXJzKSB7CisgICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAg
ICAgaWYgKGhlYWRlci52YWx1ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAgICAgICAg
ZXhwbGljaXRIZWFkZXJzLmFkZChoZWFkZXIua2V5LCBoZWFkZXJWYWx1ZSk7CisgICAgfQorICAg
IHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsK
KyAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRU
eXBlLCByZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSwgW2xvYWRlciwgYnVmZmVyID0gZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgpIG11
dGFibGUgeworICAgICAgICBpZiAoYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBsb2FkZXIt
PmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSwgRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5l
dHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICB9KTsKK30KKwordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGVTdHJpbmcp
Cit7CisgICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3Rz
LnRha2UocmVxdWVzdElkKTsKKyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4g
cmVxdWVzdElkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICBpZiAoIWxv
YWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBh
Ym9ydCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlPihlcnJvclR5cGVTdHJpbmcpOwor
ICAgIGlmICghZXJyb3JUeXBlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygi
VW5rbm93biBlcnJvclR5cGU6ICJfcywgZXJyb3JUeXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgc3dpdGNoIChlcnJvclR5
cGUudmFsdWUoKSkgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVz
b3VyY2VFcnJvclR5cGU6OkdlbmVyYWw6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAiUmVxdWVzdCBpbnRl
cmNlcHRlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5
cGU6OkFjY2Vzc0NvbnRyb2w6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAiQWNjZXNzIGRlbmllZCJfcywg
UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkNh
bmNlbGxhdGlvbjoKKyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGNhbmNlbGVkIl9zLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0
OgorICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgbG9hZGVyLT51cmwoKSwgIlJlcXVlc3QgdGltZWQgb3V0Il9zLCBSZXNvdXJjZUVycm9y
OjpUeXBlOjpUaW1lb3V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbG9hZGVy
LT5kaWRGYWlsKGVycm9yKTsKK30KKwogYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZFRyZWF0QXNUZXh0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgcmV0dXJuIHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0LyIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaAppbmRleCBiZmQxMzFlOWI1ODU2Yzg0ZGE3NzI0ODA1ZTcxMzk3YjdjNzQ4NmE5Li40YzVl
ODFlNzhiYWRkMTY4OGQ2NjliMGMyNTM5NGI2MGJkYThiMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAg
LTg4LDEwICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZXJpYWxpemVkQ2VydGlmaWNh
dGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBzZXJpYWxp
emVkQ2VydGlmaWNhdGUpIGZpbmFsOwogICAgIHZvaWQgcmVzb2x2ZVdlYlNvY2tldChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3Vw
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIGZp
bmFsOwogICAgIHZvaWQgc2V0SW50ZXJjZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wg
ZW5hYmxlZCkgZmluYWw7Ci0gICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
aXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZv
aWQgcmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmlu
ZyogbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsKLSAgICB2b2lkIGludGVyY2VwdENvbnRpbnVl
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpIGZpbmFsOworICAgIHZvaWQg
YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25z
dCBib29sKiBpc1JlZ2V4KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0
cmluZywgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCkgZmlu
YWw7CisgICAgdm9pZCBpbnRlcmNlcHRDb250aW51ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7Cisg
ICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG1ldGhvZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0
IEpTT046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkgZmluYWw7CiAg
ICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNv
bnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0
YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBp
bnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQs
IGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAgLTExOCw5ICsxMjEs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgbWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVy
Jik7CiAgICAgdm9pZCBzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxl
U3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50Jik7Ci0gICAgYm9vbCB3aWxsSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHdpbGxJbnRlcmNlcHQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZv
aWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNo
UmVzdWx0Pj4mKTsKICAgICB2b2lkIHNlYXJjaEluUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRp
dmUsIGJvb2wgaXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jik7CkBAIC0xNDAsNyArMTQ1LDkgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7
CiAKLSAgICBib29sIHNob3VsZEludGVyY2VwdChVUkwpOworICAgIHVzaW5nIE5ldHdvcmtTdGFn
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZTsKKyAgICBib29s
IHNob3VsZEludGVyY2VwdChVUkwsIE5ldHdvcmtTdGFnZSk7CisgICAgdm9pZCBjb250aW51ZVBl
bmRpbmdSZXF1ZXN0cygpOwogICAgIHZvaWQgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAK
ICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CkBAIC0xNTMsNiArMTYwLDMxIEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgdGltZXN0
YW1wKCk7CiAKKyAgICBjbGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCB7CisgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KTsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBQZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAg
ICAgOiBtX2xvYWRlcihsb2FkZXIpCisgICAgICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIHsgfQorCisgICAgICAgIHZvaWQg
Y29udGludWVXaXRoT3JpZ2luYWxSZXF1ZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFtX2xvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICAgICAgICAgICAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKG1fbG9hZGVyLT5yZXF1ZXN0KCkpOworICAgICAgICB9CisKKyAgICAg
ICAgdm9pZCBjb250aW51ZVdpdGhSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihyZXF1ZXN0KTsK
KyAgICAgICAgfQorCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KCkgPSBkZWZhdWx0
OworICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgICAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiBtX2NvbXBsZXRpb25I
YW5kbGVyOworICAgIH07CisKICAgICBjbGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2Ugewog
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwog
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTIwNCwxNSArMjM2LDE4IEBAIHBy
aXZhdGU6CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSB7
IHRydWUgfTsKICAgICAgICAgYm9vbCBpc1JlZ2V4IHsgZmFsc2UgfTsKKyAgICAgICAgTmV0d29y
a1N0YWdlIG5ldHdvcmtTdGFnZSB7IE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UgfTsKIAogICAgICAg
ICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVyY2VwdCYgb3RoZXIpIGNvbnN0CiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1cmwgPT0gb3RoZXIudXJsCiAgICAgICAgICAg
ICAgICAgJiYgY2FzZVNlbnNpdGl2ZSA9PSBvdGhlci5jYXNlU2Vuc2l0aXZlCi0gICAgICAgICAg
ICAgICAgJiYgaXNSZWdleCA9PSBvdGhlci5pc1JlZ2V4OworICAgICAgICAgICAgICAgICYmIGlz
UmVnZXggPT0gb3RoZXIuaXNSZWdleAorICAgICAgICAgICAgICAgICYmIG5ldHdvcmtTdGFnZSA9
PSBvdGhlci5uZXR3b3JrU3RhZ2U7CiAgICAgICAgIH0KICAgICB9OwogICAgIFZlY3RvcjxJbnRl
cmNlcHQ+IG1faW50ZXJjZXB0czsKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRy
PFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0Pj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHM7CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVzcG9u
c2U+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXM7CiAKICAgICAvLyBGSVhNRTogSW5zcGVj
dG9yTmV0d29ya0FnZW50IHNob3VsZCBub3QgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDIzMWVkZWM4Y2NjNzFkNjUyMTcxMDYzNjNmNWNjMzQ5OTBhMTY0N2Uu
LjY1OWUyZmU4OTA3YjMxNTk3NjYwYTdkZGM0OGI5NDVkMzNmMGY1ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAt
ODQ2LDcgKzg0Niw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAKICAgICByZXF1ZXN0LnVw
ZGF0ZVJlZmVycmVyUG9saWN5KGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5yZWZlcnJlclBvbGlj
eSgpIDogUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsKIAotICAgIGlm
IChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KCZmcmFtZSwg
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEludGVyY2VwdCgmZnJhbWUsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQog
ICAgICAgICByZXF1ZXN0LnNldENhY2hpbmdQb2xpY3koQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dD
YWNoaW5nKTsKIAogICAgIGF1dG8mIHBhZ2UgPSAqZnJhbWUucGFnZSgpOwpAQCAtMTQzNiw3ICsx
NDM2LDcgQEAgVmVjdG9yPFJlZjxTVkdJbWFnZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjphbGxD
YWNoZWRTVkdJbWFnZXMoKSBjb25zdAogCiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQog
ewotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0
KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQoZnJhbWUoKSwgcmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChSZXNvdXJjZUVycm9yIHsg
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51
cmwoKSwgIkluc3BlY3RvciBpbnRlcmNlcHQiX3MgfSk7CiAKICAgICBpZiAocmVxdWVzdC5jaGFy
c2V0KCkuaXNFbXB0eSgpICYmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQg
fHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3
b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDkzNzYzNDliOWRhYmExMDIzM2JhMDFiZDc2
NDhhZjA3OWFhMmEwZjUuLmY4ZDE0Yzg0MzczZmNkNTM2ZjVkNDAxYjIyMDgzMTAyMjdlYThhYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC0xNTksOSArMTU5LDkgQEAg
V0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsUmVzb3VyY2VPdmVycmlkZS5kaXNhYmxl
ZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRl
cmNlcHRpb24uaW52b2tlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxvY2Fs
UmVzb3VyY2VPdmVycmlkZS51cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2U6
IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3Zl
cnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVn
ZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zNjQsNyArMzY0LDcgQEAgV0kuTmV0
d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAg
ICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZl
LAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4
LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5l
dHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNw
ZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAg
ICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5ldHdv
cmsuYWRkSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0zOTcsNyArMzk3LDcgQEAgV0ku
TmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAg
ICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0
aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1Jl
Z2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVt
Lk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAg
ICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5l
dHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC05MDYsMTIgKzkwNiwy
MCBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZGVsZXRl
KHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICByZXF1ZXN0SW50ZXJjZXB0ZWQodGFy
Z2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQs
IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0pOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50
ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbGV0
IHVybCA9IFdJLnVybFdpdGhvdXRGcmFnbWVudChyZXNwb25zZS51cmwpOwogICAgICAgICBsZXQg
bG9jYWxSZXNvdXJjZU92ZXJyaWRlID0gdGhpcy5sb2NhbFJlc291cmNlT3ZlcnJpZGVGb3JVUkwo
dXJsKTsKICAgICAgICAgaWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUgfHwgbG9jYWxSZXNvdXJj
ZU92ZXJyaWRlLmRpc2FibGVkKSB7Ci0gICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50Lmlu
dGVyY2VwdENvbnRpbnVlKHJlcXVlc3RJZCk7CisgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0Fn
ZW50LmludGVyY2VwdENvbnRpbnVlLmludm9rZSh7CisgICAgICAgICAgICAgICAgcmVxdWVzdElk
LAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5O
ZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xMzc3LDcgKzEzODUsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9
IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB1cmw6
IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBs
b2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgaXNSZWdl
eDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICBuZXR3b3JrU3Rh
Z2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwK
KyAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3Jr
U3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgIH07CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAo
aU9TIDEzLjApOiBOZXR3b3JrLmFkZEludGVyY2VwdGlvbiAvIE5ldHdvcmsucmVtb3ZlSW50ZXJj
ZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0xNDMzLDQgKzE0NDEsNSBAQCBXSS5OZXR3b3JrTWFu
YWdlci5FdmVudCA9IHsKICAgICBCb290c3RyYXBTY3JpcHREZXN0cm95ZWQ6ICJuZXR3b3JrLW1h
bmFnZXItYm9vdHN0cmFwLXNjcmlwdC1kZXN0cm95ZWQiLAogICAgIExvY2FsUmVzb3VyY2VPdmVy
cmlkZUFkZGVkOiAibmV0d29yay1tYW5hZ2VyLWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLWFkZGVk
IiwKICAgICBMb2NhbFJlc291cmNlT3ZlcnJpZGVSZW1vdmVkOiAibmV0d29yay1tYW5hZ2VyLWxv
Y2FsLXJlc291cmNlLW92ZXJyaWRlLXJlbW92ZWQiLAorICAgIFJlcXVlc3RJbnRlcmNlcHRlZDog
Im5ldHdvcmstbWFuYWdlci1yZXF1ZXN0LWludGVyY2VwdGVkIgogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdv
cmtPYnNlcnZlci5qcwppbmRleCA1OWMyOWM5YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgw
MGFhLi5mZTg4MjlhNzFiZmQwZWVkODU2YjQxYzNhYWVjZTZhZTdmMWExNGQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2Jz
ZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvTmV0d29ya09ic2VydmVyLmpzCkBAIC0xMDgsNiArMTA4LDExIEBAIFdJLk5ldHdvcmtPYnNl
cnZlciA9IGNsYXNzIE5ldHdvcmtPYnNlcnZlciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlz
cGF0Y2hlcgogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogICAgIH0KIAorICAg
IHJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICBX
SS5uZXR3b3JrTWFuYWdlci5yZXF1ZXN0SW50ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0
SWQsIHJlcXVlc3QpOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQocmVxdWVzdElk
LCByZXNwb25zZSkKICAgICB7CiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlc3BvbnNlSW50
ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApp
bmRleCAwM2ViZDg5NDRhYTFiOWJjYmNlZWNiZDVmZGQxNjE5YzVhY2E4ZGFjLi5jNWFmZmZkZDI4
ZWY5YTcxZTA2ZTRkNzZhNDA0Mjc5ZjNhNjZhMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01OCw2ICs1
OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1TdHJhdGVnaWVzLmg+CkBAIC0yMzAsOCArMjMxLDE2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJl
c291CiAKICAgICBpZiAoIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VM
b2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lf
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVs
ZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MiKTsKLSAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5l
dHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRy
YWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKLSAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIgfHwgIUluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxk
SW50ZXJjZXB0UmVxdWVzdChyZXNvdXJjZUxvYWRlci5mcmFtZSgpLCByZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCkpKSB7CisgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3Mo
cmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVm
ZmVyaW5nVGltZShyZXNvdXJjZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0
KHJlc291cmNlTG9hZGVyLCBbdGhpcywgcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVm
UHRyKCZyZXNvdXJjZUxvYWRlciksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcmVzb3VyY2VdKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29y
a1Byb2Nlc3MoKnByb3RlY3RlZFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCB0cmFja2luZ1BhcmFt
ZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1C
dWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0p
OwogICAgIH0KIAogICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyIpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVf
aHR0cF9zZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2
ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQppbmRleCA4YmE5NGNjZTk5MTE3ZTQ0OTE3ZTUwNGY3
MDI1ZWQyZmEzODA1MDlkLi43MzlhNzIyZGQ2YTBjZmVkN2FjMmU5ZTkyYWQ2M2E0Mzk5ZDdhZmI3
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJz
L2FwYWNoZV9odHRwX3NlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQpAQCAtMTc5LDcgKzE3OSw2IEBA
IGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJC
YXNlKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnRfb2JqLmhvc3QucGxhdGZvcm0KIAogICAg
IGRlZiBfc3Bhd25fcHJvY2VzcyhzZWxmKToKLSAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcg
JXMgc2VydmVyLCBjbWQ9IiVzIicgJSAoc2VsZi5fbmFtZSwgc3RyKHNlbGYuX3N0YXJ0X2NtZCkp
KQogICAgICAgICByZXR2YWwsIGVyciA9IHNlbGYuX3J1bihzZWxmLl9zdGFydF9jbWQpCiAgICAg
ICAgIGlmIHJldHZhbCBvciBsZW4oZXJyKToKICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3NlcnZl
cl9lcnJvcignRmFpbGVkIHRvIHN0YXJ0ICVzJyAlIHNlbGYuX25hbWUsIGVyciwgcmV0dmFsKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDY5YzljYWEwMzcwODBjYzJkNWYxY2I2ZDU0N2MxNmI1ZGRhNTVjY2EuLjFmODBjYTZl
NjY5YThjMTYyZTIwM2Q3MDI0MjczNDM0NmZjNjAyMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAor
MjAyMC0wNi0wMyAgUGF2ZWwgIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yaworICAgICAgICBw
cm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3Rp
ZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxm
aWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcg
YW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1h
aW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNl
LXdpdGgtZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3Iu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Uu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFn
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qczoK
KyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNl
LW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2RhdGEyLmpzb246IEFkZGVkLgorCiAyMDIwLTA2LTAzICBSb2IgQnVp
cyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgRGlzYWxsb3cgcmVzcG9uc2VzIHdoZW4g
YSByZXNwb25zZSBjb250YWlucyBpbnZhbGlkIGhlYWRlciB2YWx1ZXMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
bWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQyMTI1OTA0ODM1ZWYxMGI2YzA2MDM0ZjYxNWYzZGVmMTE4ZjllYWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorQUxFUlQ6IE9SSUdJTkFMIEhUTUwgQ09OVEVOVAorQUxFUlQ6IFJFUExBQ0VEIEhUTUwg
Q09OVEVOVAorT3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNv
dXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJl
c3BvbnNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjEyNTkwNDgzNWVmMTBiNmMwNjAzNGY2
MTVmM2RlZjExOGY5ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgt
cmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQUxFUlQ6IE9SSUdJTkFMIEhU
TUwgQ09OVEVOVAorQUxFUlQ6IFJFUExBQ0VEIEhUTUwgQ09OVEVOVAorT3ZlcnJpZGRlbiBwYWdl
IGNvbnRlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NjA4ODk1
ZTk4ZDFkYmE4ZjU2YzU5OGI1NTllNzI4ODIwOTliYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1h
aW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRl
QXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIik7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJl
cXVlc3QuTWFpblJlc291cmNlIHdpdGggcmVzcG9uc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjog
Ik1haW4gcmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiBvbiBuZXh0IHBhZ2UgbG9h
ZCBhbmQgZnVsZmlsbHMgcmVxdWVzdCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAg
ICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgICAgICBh
d2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAg
ICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCIsCisgICAg
ICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBpbnRlcmNl
cHRXaXRoUmVzcG9uc2UgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3Rhcmdl
dCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdGFy
Z2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLmludm9rZSh7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5
cGU6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgPCFET0NUWVBF
IGh0bWw+PGh0bWw+PGhlYWQ+PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9gK2BzY3JpcHQ+PC9oZWFkPjxib2R5PjxwPk92ZXJyaWRkZW4gcGFnZSBjb250ZW50
PC9wPjxzY3JpcHQ+YWxlcnQoIlJFUExBQ0VEIEhUTUwgQ09OVEVOVCIpOyBUZXN0UGFnZS5jb21w
bGV0ZVRlc3QoKTs8L2ArYHNjcmlwdD48L2JvZHk+PC9odG1sPmAsCisgICAgICAgICAgICAgICAg
ICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIw
MCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAg
ICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3Jr
TWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdpdGhSZXNwb25zZSk7
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZh
bHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0
aW9uIGludGVyY2VwdGluZyB0aGUgbWFpbiByZXNvdXJjZSBsb2FkIHdpdGggcmVzcG9uc2UuPC9w
PgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRNTCBDT05URU5UIik7PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1y
ZXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MTRhNjhhZTEzN2Y1MDJiMWI3NGQyNWYzNWYwYmNm
Y2E5ZTVhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbApAQCAtMCww
ICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVl
c3QiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdC5NYWluUmVzb3VyY2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIk1h
aW4gcmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiBvbiBuZXh0IHBhZ2UgbG9hZCIs
CisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNz
dW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50
LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJl
c291cmNlLmh0bWwiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVu
dW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7Cisg
ICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5p
bnZva2UoeworICAgICAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1w
YWdlLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwg
aW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9h
ZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0p
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2go
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+
VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBpbnRlcmNlcHRpbmcgdGhlIG1haW4gcmVzb3VyY2Ug
bG9hZC48L3A+Cis8c2NyaXB0PmFsZXJ0KCJPUklHSU5BTCBIVE1MIENPTlRFTlQiKTs8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1y
ZXF1ZXN0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3YmRiOTBmYjMyODcx
YWYwZmExNWJlOGY3NWM2N2YxMGQ1ZDA3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRp
b24gYWx0ZXJpbmcgcmVxdWVzdCBwcm9wZXJ0aWVzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2QKK01ldGhvZD1QT1NUCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuSGVhZGVycworT3ZlcnJpZGVuIGhl
YWRlcjpvdmVycmlkZW4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdC5Qb3N0RGF0YQorT3ZlcnJpZGVuIHZhbHVlOiBvdmVycmlkZW4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1wcm9wZXJ0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2E5
NTgwODgyMTg3MDgyMjllNDc1MmI5MzdmZThlOGI3YTFhODZlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1wcm9wZXJ0aWVzLmh0bWwKQEAgLTAsMCArMSwxMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0
aW9uIGZldGNoRGF0YSh1cmwpCit7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJs
KTsKKyAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UudGV4dCgpOworfQorCithc3luYyBmdW5jdGlv
biBwb3N0RGF0YSh1cmwpCit7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7
CisgICAgICAgIG1ldGhvZDogIlBPU1QiLAorICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAg
ICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKKyAg
ICAgICAgfSwKKyAgICAgICAgYm9keTogInZhbHVlPW9yaWdpbmFsIgorICAgIH0pOworICAgIHJl
dHVybiBhd2FpdCByZXNwb25zZS50ZXh0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZCIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQo
KTsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9u
Lmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bWV0aG9kIiwKKyAg
ICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGludGVy
Y2VwdFdpdGhSZXF1ZXN0ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJn
ZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIGlm
ICghcmVxdWVzdC51cmwuaW5jbHVkZXMoJz9tZXRob2QnKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0
aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAg
ICAgICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0
aFJlcXVlc3QpOworCisgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVu
dGltZUFnZW50LmV2YWx1YXRlKCJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5w
aHA/bWV0aG9kJykiKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRp
bWVBZ2VudC5hd2FpdFByb21pc2UocmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsKKyAg
ICAgICAgICAgIGxldCBkYXRhID0gZXZhbCgnKCcgKyByZXNwb25zZS5yZXN1bHQudmFsdWUgKyAn
KScpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIk1ldGhvZD0iICsgZGF0YS5tZXRo
b2QpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuSGVhZGVycyIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBoZWFkZXJzIGludGVyY2VwdGlvbiIsCisgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWlu
VGFyZ2V0KCk7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVy
Y2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP2hlYWRl
cnMiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29y
ay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBs
ZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBs
ZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAg
ICAgICAgaWYgKCFyZXF1ZXN0LnVybC5pbmNsdWRlcygnP2hlYWRlcnMnKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50
ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElk
LAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7ICJ2YWx1ZSI6ICJvdmVycmlkZW4iIH0s
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0
d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1
ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdpdGhSZXF1ZXN0KTsKKworICAgICAgICAgICAgbGV0
IHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0Y2hEYXRh
KCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP2hlYWRlcnMnKSIpOworICAgICAgICAgICAg
cmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVudGltZUFnZW50LmF3YWl0UHJvbWlzZShyZXNwb25z
ZS5yZXN1bHQub2JqZWN0SWQsIHRydWUpOworICAgICAgICAgICAgbGV0IGRhdGEgPSBldmFsKCco
JyArIHJlc3BvbnNlLnJlc3VsdC52YWx1ZSArICcpJyk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiT3ZlcnJpZGVuIGhlYWRlcjoiICsgZGF0YS5oZWFkZXJzLnZhbHVlKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlBvc3REYXRhIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJUZXN0cyByZXF1ZXN0IHBvc3QgZGF0YSBpbnRlcmNlcHRpb24iLAorICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgp
OworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24u
aW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9wb3N0RGF0YSIsCisg
ICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdv
cmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBpbnRl
cmNlcHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFy
Z2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXJlcXVlc3QudXJsLmluY2x1ZGVzKCc/cG9zdERhdGEnKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0
V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAg
ICAgICAgICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwKKyAgICAgICAgICAgICAgICAgICAgcG9z
dERhdGE6IGJ0b2EoInZhbHVlPW92ZXJyaWRlbiIpLAorICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRX
aXRoUmVxdWVzdCk7CisKKyAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRhcmdldC5S
dW50aW1lQWdlbnQuZXZhbHVhdGUoInBvc3REYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8u
cGhwP3Bvc3REYXRhJykiKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1
bnRpbWVBZ2VudC5hd2FpdFByb21pc2UocmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsK
KyAgICAgICAgICAgIGxldCBkYXRhID0gZXZhbCgnKCcgKyByZXNwb25zZS5yZXN1bHQudmFsdWUg
KyAnKScpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIk92ZXJyaWRlbiB2YWx1ZTog
IiArIGRhdGEucG9zdC52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGFsdGVyaW5nIHJl
cXVlc3QgcHJvcGVydGllcy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRlNWY0ZTA3ZWZiNjI2YTNmYTNmY2U5NTZkM2M1MTFmOTgwMjNhYWUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0FM
RVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK0FMRVJUOiBPVkVSUklERU4gb3ZlcnJpZGUu
anMgVEVYVAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBpbnRlcmNlcHRpbmcgdGhlIHN1YnJl
c291cmNlIGxvYWQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3QKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3Qu
U3VicmVzb3VyY2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDk5ZTYwY2NmNTExOWUwNGMwN2VjMTRiMTk4YTJjNzBkNWNjYmRiMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3
IEBACitBTEVSVDogREVGQVVMVCBvdmVycmlkZS5qcyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJj
ZXB0aW9uIHdpdGggZXJyb3IgZm9yIHRoZSBzdWJyZXNvdXJjZSBsb2FkLgorCisKKz09IFJ1bm5p
bmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGgg
ZXJyb3IKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDA4MTE4MzRmZmNmZjM4ZmFm
YzQ5ODc1Y2QwMmRkNDlmZDk4NTY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13
aXRoLWVycm9yLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3
aXRoIGVycm9yIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVl
c3QgaW50ZXJjZXB0aW9uIHdpdGggZXJyb3IiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAg
ICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICAg
ICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAg
ICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL292ZXJyaWRlLmpzIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVj
dG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAg
ICB9KTsKKyAgICAKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVxdWVzdCA9IChldmVu
dCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9
ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVy
Y2VwdFJlcXVlc3RXaXRoRXJyb3IuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dElkLAorICAgICAgICAgICAgICAgICAgICBlcnJvclR5cGU6IEluc3BlY3RvckJhY2tlbmQuRW51
bS5OZXR3b3JrLlJlc291cmNlRXJyb3JUeXBlLkdlbmVyYWwsCisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVy
Y2VwdFdpdGhSZXF1ZXN0KTsKKworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5yZWxv
YWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9
KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNo
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxw
PlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBlcnJvciBmb3IgdGhlIHN1YnJlc291cmNl
IGxvYWQuPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVycmlkZS5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9u
c2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZDcwYTE2NmM3NjkxM2E4ZWRlMzM4MmViOWMyZjhlZjk5MmVhNzgyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK0FMRVJU
OiBPVkVSUklEREVOIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24g
d2l0aCByZXNwb25zZSBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisKKworPT0gUnVubmluZyB0
ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBy
ZXNwb25zZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1Y2Q1NTgzMTM5
ZTI1YmI5YjVlYTJkZTk0OTEwOWJhYjcyYzE0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJl
c291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5j
U3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIpOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
LlN1YnJlc291cmNlIHdpdGggcmVzcG9uc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJl
c291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNwb25zZSIsCisgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kZWJ1ZygpOworICAgICAg
ICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICAgICAg
YXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAg
ICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL292ZXJyaWRlLmpzIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9y
QmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgbGV0IGludGVyY2VwdFdpdGhSZXF1ZXN0ID0gKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVu
dC5kYXRhOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZS5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQs
CisgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9qYXZhc2NyaXB0IiwKKyAgICAg
ICAgICAgICAgICAgICAgY29udGVudDogYGFsZXJ0KCJPVkVSUklEREVOIG92ZXJyaWRlLmpzIFRF
WFQiKTsgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIk92ZXJyaWRlQ29udGVudERp
ZExvYWQiKTtgLAorICAgICAgICAgICAgICAgICAgICBiYXNlNjRFbmNvZGVkOiBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1
c1RleHQ6ICJPSyIsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LAorICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2Vw
dGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3Rv
clRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3Vy
Y2VzOiB0cnVlfSk7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQo
Ik92ZXJyaWRlQ29udGVudERpZExvYWQiKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBy
ZXNwb25zZSBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuPC9wPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9vdmVycmlkZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LXN1YnJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg4
NGFhZmFiOGE2MTQyNTNhYzU1ZmYzYWRhZWRkMjYzNzAwYzQ3YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3Qtc3VicmVzb3VyY2UuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUo
Ik5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9u
IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5h
c3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdl
bnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIs
CisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5l
dHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBsZXQgaW50
ZXJjZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3Rh
cmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAg
dGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2UoeworICAgICAg
ICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMiLAorICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0SWQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
Lk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJl
cXVlc3QpOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2ln
bm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAgICAg
ICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJPdmVycmlkZUNvbnRlbnREaWRM
b2FkIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVzb3Vy
Y2UgbG9hZC48L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hv
LnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NWNjMDAyYTg4ZDVlOTYzMTY1YTAwYWI5NmJjMTRiOTdkZGNiNzg5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAg
ICAibWV0aG9kIjogIjw/cGhwIGVjaG8gJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ107ID8+IiwK
KyAgICAiaGVhZGVycyI6IHsKKzw/cGhwIGZvcmVhY2ggKGdldGFsbGhlYWRlcnMoKSBhcyAkbmFt
ZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAgICAgIjw/cGhwIGVjaG8gJG5hbWU7ID8+IjogIjw/cGhw
IGVjaG8gJHZhbHVlOyA/PiIsCis8P3BocCB9ID8+IH0sCisgICAgInBvc3QiOiB7Cis8P3BocCBm
b3JlYWNoICgkX1BPU1QgYXMgJG5hbWUgPT4gJHZhbHVlKSB7ID8+CisgICAgICAgICI8P3BocCBl
Y2hvICRuYW1lOyA/PiI6ICI8P3BocCBlY2hvICR2YWx1ZTsgPz4iLAorPD9waHAgfSA/PgorICAg
IH0sCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0
LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjIyMTY3ZWRiMGJiZTNm
YjA3MmM0NzFlYzgyMzc0OTUzYTVkMmE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qt
b3ZlcnJpZGVuLXBhZ2UuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPjwvaGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2lu
c3BlY3Rvci10ZXN0LmpzIj4KKyAgICA8L3NjcmlwdD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+
T3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQ8L3A+CisgICAgICAgIDxzY3JpcHQ+YWxlcnQoIlJFUExB
Q0VEIEhUTUwgQ09OVEVOVCIpOyBUZXN0UGFnZS5jb21wbGV0ZVRlc3QoKTs8L3NjcmlwdD4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2Ny
aXB0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Nzhl
YzRlMjYxMTU3ZDMzMDkxOWMxMzI4OTk5NTU3Nzk4OTM3ZWFiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJj
ZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcwpAQCAtMCwwICsxLDIgQEAKK2FsZXJ0KCJP
VkVSUklERU4gb3ZlcnJpZGUuanMgVEVYVCIpOworVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJv
bnRlbmQoIk92ZXJyaWRlQ29udGVudERpZExvYWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMKaW5k
ZXggYTAyNjQ5ZDU2YmRiM2QyODVjMWYwZDdmODAwY2ZlNDEwODkyMjY0MS4uODMxYTYxZjY3ODVl
NDQ4OGIxMmQ3ZGZkZWYxZmU2NmQzNzU1MTIyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMKQEAg
LTg3LDEyICs4NywxNCBAQCBUZXN0UGFnZS5ydW5UZXN0ID0gd2luZG93LnJ1blRlc3QgPSBmdW5j
dGlvbigpCiAgICAgaWYgKHR5cGVvZiB0ZXN0RnVuY3Rpb24gIT09ICJmdW5jdGlvbiIpIHsKICAg
ICAgICAgYWxlcnQoIkZhaWxlZCB0byBzZW5kIHRlc3QoKSBiZWNhdXNlIGl0IGlzIG5vdCBhIGZ1
bmN0aW9uLiIpOwogICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGxldCB1cmwgPSB0ZXN0UnVubmVyLmluc3BlY3RvclRlc3RTdHVi
VVJMOwogICAgIGlmICghdXJsKSB7CiAgICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gb2J0YWluIGlu
c3BlY3RvciB0ZXN0IHN0dWIgVVJMLiIpOwogICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1bkluaXRpYWxpemF0
aW9uTWV0aG9kc0luRnJvbnRlbmQoaW5pdGlhbGl6ZXJzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhkMTU4MzhhZGQxZmUzOTZhNTE4OGQxZTE2NzAzODhmYWUwOGRiYWIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGVzdCByZXF1ZXN0IGludGVy
Y2VwdGlvbi4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
TmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2Vw
dENvbnRpbnVlCitSZXNwb25zZSBkYXRhOiAneyJhbHBoYSI6ImJldGEiLCJnYW1tYSI6MTIzNDV9
JworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjog
cmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXF1ZXN0Cit0ZXh0OiB1bmRlZmluZWQK
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJl
cXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlCit0ZXh0OiBpbnRl
cmNlcHRlZCBkYXRhCitzdGF0dXM6IDIwMAorc3RhdHVzVGV4dDogT0sKK21pbWVUeXBlOiBhcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0KK215LWhlYWRlcjogbXktdmFsdWUKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJbnRlcmNlcHRl
ZC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yCitSZXF1ZXN0IGVycm9yOiAnUmVxdWVzdCBjYW5j
ZWxlZCcKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWUzYzU2MmUxNGUxNjg2ZGI2ODg2MjI5OGZhODZm
MzMxOGI0ZjQ5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKQEAgLTAsMCArMSwxNzcgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBmZXRjaERhdGEoKSB7CisgICAg
dHJ5IHsKKyAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJ3Jlc291cmNlcy9kYXRh
Lmpzb24nKTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRleHQ6IGF3YWl0IHJlc3Bv
bnNlLnRleHQoKSwKKyAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLAorICAgICAg
ICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCwKKyAgICAgICAgICAgIG1pbWVU
eXBlOiByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyksCisgICAgICAgICAgICBo
ZWFkZXI6IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdteS1oZWFkZXInKSwKKyAgICAgICAgfTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiBlLm1lc3NhZ2U7CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBQcm90b2NvbFRlc3QuY3JlYXRlQXN5
bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7CisKKyAgICBmdW5jdGlvbiBwcmlu
dEZldGNoUmVzdWx0KHJlc3VsdCkKKyAgICB7CisgICAgICAgIFByb3RvY29sVGVzdC5sb2coInRl
eHQ6ICIgKyByZXN1bHQudGV4dCk7CisgICAgICAgIFByb3RvY29sVGVzdC5sb2coInN0YXR1czog
IiArIHJlc3VsdC5zdGF0dXMpOworICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJzdGF0dXNUZXh0
OiAiICsgcmVzdWx0LnN0YXR1c1RleHQpOworICAgICAgICBQcm90b2NvbFRlc3QubG9nKCJtaW1l
VHlwZTogIiArIHJlc3VsdC5taW1lVHlwZSk7CisgICAgICAgIFByb3RvY29sVGVzdC5sb2coIm15
LWhlYWRlcjogIiArIHJlc3VsdC5oZWFkZXIpOworICAgIH0KKworICAgIGxldCB1cmw7CisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAic2V0VXAiLAorICAgICAgICBhc3lu
YyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IFtyZXN1bHQxLCByZXN1bHQyLCB7cmVzdWx0fV0g
PSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wu
YXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmVuYWJsZSIsIHBhcmFtczoge319KSwKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1
bnRpbWUuZW5hYmxlIiwgcGFyYW1zOiB7fX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclBy
b3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczog
eworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAiZG9jdW1lbnQuVVJMIiwKKyAgICAg
ICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRD
b21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLnNldEludGVyY2VwdGlvbkVuYWJsZWQiLCBwYXJhbXM6
IHsKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9
fSksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgbGV0IGJhc2VVUkwgPSByZXN1bHQu
dmFsdWUuc3Vic3RyaW5nKDAsIHJlc3VsdC52YWx1ZS5sYXN0SW5kZXhPZigiLyIpKTsKKyAgICAg
ICAgICAgIHVybCA9IGJhc2VVUkwgKyAiL3Jlc291cmNlcy9kYXRhLmpzb24iOworICAgICAgICAg
ICAgYXdhaXQgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3Jr
LmFkZEludGVyY2VwdGlvbiIsIHBhcmFtczogeyB1cmwsIHN0YWdlOiAicmVxdWVzdCIgfX0pOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50
ZXJjZXB0Q29udGludWUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgY29udGludWUgaW50
ZXJjZXB0ZWQgcmVxdWVzdC4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAg
Ly8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAgICAgICAgICBsZXQgW2ZldGNoUmVz
dWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50
aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246
ICJmZXRjaERhdGEoKSIsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIElu
c3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQoe2V2ZW50OiAiTmV0d29yay5yZXF1ZXN0SW50ZXJj
ZXB0ZWQifSksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgLy8gTGV0IHRoZSBsb2Fk
IGNvbnRpbnVlLgorICAgICAgICAgICAgbGV0IFtmZXRjaFJlc3VsdF0gPSBhd2FpdCBQcm9taXNl
LmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHtt
ZXRob2Q6ICJSdW50aW1lLmF3YWl0UHJvbWlzZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJvbWlzZS5yZXN1bHQub2JqZWN0SWQs
CisgICAgICAgICAgICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsCisgICAgICAgICAgICAg
ICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7
bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIsIHBhcmFtczogeworICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1zLnJlcXVlc3RJZCwK
KyAgICAgICAgICAgICAgICAgICAgc3RhZ2U6ICJyZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICB9
fSksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coIlJlc3Bv
bnNlIGRhdGE6ICciICsgZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlLnRleHQudHJpbSgpICsgIici
KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVk
LmludGVyY2VwdFdpdGhSZXF1ZXN0IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGZ1bGZp
bGwgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHJlc3BvbnNlLiIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5kIGludGVyY2VwdCBpdC4KKyAgICAg
ICAgICAgIGxldCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0
IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENv
bW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAg
ICAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIiwKKyAgICAgICAgICAgICAgICB9fSks
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZlbnQ6ICJO
ZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAg
ICAgICAvLyBGdWxmaWxsIHRoZSByZXF1ZXN0IHdpdGggZGF0YS4KKyAgICAgICAgICAgIGxldCBb
ZmV0Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2Ui
LCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJl
c3VsdFByb21pc2UucmVzdWx0Lm9iamVjdElkLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5C
eVZhbHVlOiB0cnVlLAorICAgICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3QiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiBpbnRl
cmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHVybDog
dXJsLnJlcGxhY2UoJ2RhdGEuanNvbicsICdkYXRhLWludGVyY2VwdGVkLmpzb24nKSwKKyAgICAg
ICAgICAgICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIFByb3RvY29sVGVz
dC5sb2coInRleHQ6ICIgKyBmZXRjaFJlc3VsdC5yZXN1bHQudmFsdWUudGV4dCk7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGZ1bGZpbGwg
aW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHJlc3BvbnNlLiIsCisgICAgICAgIGFzeW5jIHRlc3Qo
KSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5kIGludGVyY2VwdCBpdC4KKyAgICAgICAg
ICAgIGxldCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFBy
b21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1h
bmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAg
ICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIiwKKyAgICAgICAgICAgICAgICB9fSksCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZlbnQ6ICJOZXR3
b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAg
ICAvLyBGdWxmaWxsIHRoZSByZXF1ZXN0IHdpdGggZGF0YS4KKyAgICAgICAgICAgIGxldCBbZmV0
Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBw
YXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3Vs
dFByb21pc2UucmVzdWx0Lm9iamVjdElkLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZh
bHVlOiB0cnVlCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3Rv
clByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnNlIiwgcGFyYW1zOiB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDog
aW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBz
dGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAg
ICAgICAgICAgICAgICAgaGVhZGVyczogeyAibXktaGVhZGVyIjogIm15LXZhbHVlIiB9LAorICAg
ICAgICAgICAgICAgICAgICBtaW1lVHlwZTogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGJ0b2EoImludGVyY2VwdGVkIGRhdGEiKSwKKyAg
ICAgICAgICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9
fSksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIHByaW50RmV0Y2hSZXN1bHQoZmV0Y2hS
ZXN1bHQucmVzdWx0LnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbjog
cmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IiLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIlRlc3QgYWJvcnQgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIGVycm9yLiIs
CisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5kIGlu
dGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNl
cHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJh
bXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIiwKKyAg
ICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdh
aXRFdmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KSwKKyAgICAgICAg
ICAgIF0pOworCisgICAgICAgICAgICAvLyBBYm9ydCB0aGUgcmVxdWVzdCBhcyBjYW5jZWxlZC4K
KyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVu
dGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9iamVjdElkLAorICAgICAgICAg
ICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLAorICAgICAgICAgICAgICAgIH19KSwKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIsIHBhcmFtczogeworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQucGFyYW1zLnJlcXVlc3RJZCwKKyAg
ICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlOiAiQ2FuY2VsbGF0aW9uIiwKKyAgICAgICAgICAg
ICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIFByb3RvY29sVGVzdC5sb2co
IlJlcXVlc3QgZXJyb3I6ICciICsgZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlICsgIiciKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3Qg
cmVxdWVzdCBpbnRlcmNlcHRpb24uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29u
dGludWUtcmVzcG9uc2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2Fs
LXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKaW5kZXggNDQ4MDY0MjAw
NDQ3Njk3ZmIwN2Y0MTZlOTc4NjM5OGUwMDNkMjQ2MC4uZDY2ZTE0MGViNzE3ODY0N2MzODg2Mjli
MGQxM2UxYWEwMWEwMzBjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250
aW51ZS1yZXNwb25zZS5odG1sCkBAIC00Niw3ICs0Niw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICAgICAgLy8gTGV0IHRoZSBsb2FkIGNvbnRpbnVlLgogICAgICAgICAgICAgYXdhaXQgUHJv
bWlzZS5hbGwoWwogICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQo
e2V2ZW50OiAiTmV0d29yay5yZXNwb25zZVJlY2VpdmVkIn0pLAotICAgICAgICAgICAgICAgIElu
c3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRD
b250aW51ZSIsIHBhcmFtczoge3JlcXVlc3RJZDogbWVzc2FnZU9iamVjdC5wYXJhbXMucmVxdWVz
dElkfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7
bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIsIHBhcmFtczoge3JlcXVlc3RJZDog
bWVzc2FnZU9iamVjdC5wYXJhbXMucmVxdWVzdElkLCBzdGFnZTogInJlc3BvbnNlIn19KSwKICAg
ICAgICAgICAgIF0pOwogICAgICAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoIlJlc3BvbnNlIHJl
Y2VpdmVkLiIpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400976</attachid>
            <date>2020-06-03 15:56:30 -0700</date>
            <delta_ts>2020-06-05 22:37:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200603155629.patch</filename>
            <type>text/plain</type>
            <size>89633</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YjBmYTIwZmE0MWJiOWQ3YzU2ODhlOWUzODk5YzZjYTA3MTFkZWQ1Li5jNTY1N2Y3MmM4YmNiNGY1
MTIwYTM3MTY2ZTk3ZjJkODljNDcwZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0wMyAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cCBuZWVkcyB0byAjaW5jbHVkZSBPcGVyYW5kc0lubGluZXMuaC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNmU0
MzdjODg3ODE1ZWVjNjg5YmIyNDQwYWMzYTcxNDE5MzZiOTM0Li4zMmJlZmQyODRhYjIwYzVjNWI2
YWIzNGRhZDQ5MWFkZDQwMTM2ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAt
MDYtMDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJv
ZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAg
ICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qg
bm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3Ig
ZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVl
c3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJ
bnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbElu
dGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVx
dWVzdDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0wNi0wMyAgUm9iIEJ1
aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIERpc2FsbG93IHJlc3BvbnNlcyB3aGVu
IGEgcmVzcG9uc2UgY29udGFpbnMgaW52YWxpZCBoZWFkZXIgdmFsdWVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZwppbmRleCA3M2Q1Zjg4OTRhYjFiNzMxMmFiNWJjZTg4YjdlNzIwYmI2NDBkYTg3Li4y
M2NhYWU1MmY1M2IyYzA3NDY5MWRiZDNmZTUyM2ZkYWQ1ZmE4OTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgIDxwYXZlbC5mZWxk
bWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVz
dCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlv
biB0byB0aGUgTmV0d29yayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdv
cmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJl
IGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4g
bm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanM6CisgICAg
ICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6ZVRhcmdldCk6CisgICAg
ICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuYWRkTG9jYWxSZXNvdXJjZU92ZXJyaWRl
KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVMb2NhbFJlc291
cmNlT3ZlcnJpZGUpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlcXVl
c3RJbnRlcmNlcHRlZCk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVz
cG9uc2VJbnRlcmNlcHRlZCk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUu
X2hhbmRsZVJlc291cmNlT3ZlcnJpZGVEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzOgorICAgICAgICAoV0kuTmV0d29y
a09ic2VydmVyLnByb3RvdHlwZS5yZXF1ZXN0SW50ZXJjZXB0ZWQpOgorCiAyMDIwLTA2LTAxICBE
ZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBHcmFwaGljczogc2hvdWxkIHVzZSB0aGUgYGlkYCAobmFtZSkgb2YgdGhlIGFuaW1hdGlvbiBp
ZiBpdCBleGlzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjVhODgwNTQzZGFiMWQxOTM4NTQ4MGIyMDQ1MmE5MWY4
ZDNhNWJjMi4uYjY3NjQwZGQxOTk3NTFjYjdjMTRiYmZkNzM4YjM3OTU0NmI0NGM1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZl
bGRtYW5AZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1
ZXN0IGludGVyY2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0
aW9uIHRvIHRoZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0
d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4g
YmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNh
biBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisKIDIwMjAtMDYt
MDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gSGlk
ZSB0aGUgUGlQIGJ1dHRvbiBpbiBmdWxsc2NyZWVuIG1vZGUgaWYgUGlQIGlzIGRpc2FibGVkIGlu
IHByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL05ldHdvcmsuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvTmV0d29yay5qc29uCmluZGV4IGYyNDI1ZGQ2YWZjMGVmYmYxZDExNTIyMGZkNDI0
NmFmZTJmYjkyZTEuLmZmODRmY2EwZmVhNWQyYWRlODM1NzQ3OThmMTllMDljOWQ3YTYxNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29y
ay5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0
d29yay5qc29uCkBAIC0xNTUsNyArMTU1LDEzIEBACiAgICAgICAgICAgICAiaWQiOiAiTmV0d29y
a1N0YWdlIiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRGlmZmVyZW50IHN0YWdlcyBvZiBhIG5ldHdvcmsgcmVxdWVzdC4iLAotICAg
ICAgICAgICAgImVudW0iOiBbInJlc3BvbnNlIl0KKyAgICAgICAgICAgICJlbnVtIjogWyJyZXF1
ZXN0IiwgInJlc3BvbnNlIl0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlk
IjogIlJlc291cmNlRXJyb3JUeXBlIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlmZmVyZW50IHN0YWdlcyBvZiBhIG5ldHdvcmsg
cmVxdWVzdC4iLAorICAgICAgICAgICAgImVudW0iOiBbIkdlbmVyYWwiLCAiQWNjZXNzQ29udHJv
bCIsICJDYW5jZWxsYXRpb24iLCAiVGltZW91dCJdCiAgICAgICAgIH0KICAgICBdLAogICAgICJj
b21tYW5kcyI6IFsKQEAgLTI0NCwxMCArMjUwLDEwIEBACiAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiQWRkIGFuIGludGVyY2VwdGlvbi4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVzIjog
WyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgcGF0dGVy
biB0byBpbnRlcmNlcHQsIGludGVyY2VwdCBldmVyeXRoaW5nIGlmIG5vdCBzcGVjaWZpZWQgb3Ig
ZW1wdHkiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5l
dHdvcmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0byBpbnRlcmNlcHQuIiB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FzZVNlbnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4i
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0
dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJhbWV0ZXIuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIg
ZXhwcmVzc2lvbi4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVm
IjogIk5ldHdvcmtTdGFnZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBu
b3QgcHJlc2VudCB0aGlzIGFwcGxpZXMgdG8gYWxsIG5ldHdvcmsgc3RhZ2VzLiIgfQorICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRl
ciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwK
ICAgICAgICAgewpAQCAtMjU2LDE3ICsyNjIsMjkgQEAKICAgICAgICAgICAgICJ0YXJnZXRUeXBl
cyI6IFsicGFnZSJdLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6
ICJTdGFnZSB0byBpbnRlcmNlcHQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2Fz
ZVNlbnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJhbWV0
ZXIuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJv
b2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRz
IGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0sCi0gICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0aGlzIGFwcGxpZXMgdG8g
YWxsIG5ldHdvcmsgc3RhZ2VzLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdl
eCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
SWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4i
IH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5h
bWUiOiAiaW50ZXJjZXB0Q29udGludWUiLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNv
bnRpbnVlIGFuIGludGVyY2VwdGlvbiB3aXRoIG5vIG1vZGlmaWNhdGlvbnMuIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJDb250aW51ZSByZXF1ZXN0IG9yIHJlc3BvbnNlIHdpdGhvdXQg
bW9kaWZpY2F0aW9ucy4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdlIl0sCiAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJl
cXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVy
IGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRp
bnVlLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAi
UmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRl
ZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAiZGVzY3Jp
cHRpb24iOiAiU3RhZ2UgdG8gY29udGludWUuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdFdpdGhSZXF1ZXN0IiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYWNlIGludGVyY2VwdGVkIHJlcXVlc3Qg
d2l0aCB0aGUgcHJvdmlkZWQgb25lLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIs
ICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayBy
ZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm1ldGhvZCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsImRlc2Ny
aXB0aW9uIjogIkhUVFAgcmVxdWVzdCBtZXRob2QuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwiZGVzY3JpcHRp
b24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJo
ZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMg
aWYgdW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3N0RGF0YSIs
ICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQ
IFBPU1QgcmVxdWVzdCBkYXRhLCBiYXNlNjQtZW5jb2RlZC4iIH0KICAgICAgICAgICAgIF0KICAg
ICAgICAgfSwKICAgICAgICAgewpAQCAtMjgyLDYgKzMwMCwyNyBAQAogICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0LiBQYXNzIHRocm91
Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMiLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRocm91Z2ggb3JpZ2lu
YWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9u
c2UiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgcmVzcG9uc2UgZm9yIGFu
IGludGVyY2VwdGVkIHJlcXVlc3QuIFJlcXVlc3QgY29tcGxldGVseSBieXBhc3NlcyB0aGUgbmV0
d29yayBpbiB0aGlzIGNhc2UgYW5kIGlzIGltbWVkaWF0ZWx5IGZ1bGZpbGxlZCB3aXRoIHRoZSBw
cm92aWRlZCBkYXRhLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlw
dGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXNwb25zZSB0
byBtb2RpZnkuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBl
IjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2NEVuY29kZWQi
LCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNvbnRlbnQgd2Fz
IHNlbnQgYXMgYmFzZTY0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1pbWVUeXBl
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk1JTUUgVHlwZSBmb3IgdGhlIGRh
dGEuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzIiwgInR5cGUiOiAiaW50
ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlLiBQYXNzIHRo
cm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6
ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0LiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVz
IGlmIHVubW9kaWZpZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVycyIs
ICIkcmVmIjogIkhlYWRlcnMiLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJz
LiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVy
Y2VwdFJlcXVlc3RXaXRoRXJyb3IiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZhaWwg
cmVxdWVzdCB3aXRoIGdpdmVuIGVycm9yIHR5cGUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVx
dWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBO
ZXR3b3JrIHJlcXVlc3QgdG8gZmFpbC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJl
cnJvclR5cGUiLCAiJHJlZiI6ICJSZXNvdXJjZUVycm9yVHlwZSIsICJkZXNjcmlwdGlvbiI6ICJE
ZWxpdmVyIGVycm9yIHJlYXNvbiBmb3IgdGhlIHJlcXVlc3QgZmFpbHVyZS4iIH0KKyAgICAgICAg
ICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImV2ZW50cyI6IFsKQEAgLTM1Nyw5ICszOTYs
MTcgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc291cmNlIiwgIiRyZWYiOiAiQ2Fj
aGVkUmVzb3VyY2UiLCAiZGVzY3JpcHRpb24iOiAiQ2FjaGVkIHJlc291cmNlIGRhdGEuIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjog
InJlcXVlc3RJbnRlcmNlcHRlZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQg
d2hlbiBIVFRQIHJlcXVlc3QgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0
IHJlc3BvbmQgd2l0aCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdENvbnRpbnVlPC9jb2RlPiwgPGNv
ZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdDwvY29kZT5gIG9yIDxjb2RlPk5ldHdvcmsu
aW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2RlPmAgdG8gcmVzb2x2ZSB0aGlzIHJlcXVlc3QuIiwK
KyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZp
ZXIgZm9yIHRoaXMgaW50ZXJjZXB0ZWQgbmV0d29yay4gQ29ycmVzcG9uZHMgd2l0aCBhbiBlYXJs
aWVyIDxjb2RlPk5ldHdvcmsucmVxdWVzdFdpbGxCZVNlbnQ8L2NvZGU+LiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInJlcXVlc3QiLCAiJHJlZiI6ICJSZXF1ZXN0IiwgImRlc2NyaXB0
aW9uIjogIk9yaWdpbmFsIHJlcXVlc3QgY29udGVudCB0aGF0IHdvdWxkIHByb2NlZWQgaWYgdGhp
cyBpcyBjb250aW51ZWQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAgIHsK
ICAgICAgICAgICAgICJuYW1lIjogInJlc3BvbnNlSW50ZXJjZXB0ZWQiLAotICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXNwb25zZSBoYXMgYmVlbiBpbnRlcmNl
cHRlZC4gVGhlIGZyb250ZW5kIG11c3QgcmVzcG9uc2Ugd2l0aCA8Y29kZT5OZXR3b3JrLmludGVy
Y2VwdENvbnRpbnVlPC9jb2RlPiBvciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25z
PC9jb2RlPmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXNwb25zZSBoYXMgYmVlbiBpbnRlcmNlcHRlZC4g
VGhlIGZyb250ZW5kIG11c3QgcmVzcG9uc2Ugd2l0aCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdENv
bnRpbnVlPC9jb2RlPiBvciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZTwvY29k
ZT5gIHRvIGNvbnRpbnVlIHRoaXMgcmVzcG9uc2UuIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBl
cyI6IFsicGFnZSJdLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRp
b24iOiAiSWRlbnRpZmllciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25k
cyB3aXRoIGFuIGVhcmxpZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4u
IiB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAppbmRleCBiMGQ3NjY0YTBhMGI2MDQ5MjQwOWVkNTlhYTMwOTIzNjdmNmRk
YTY4Li4wZjBmMmExMzZlY2MzZGQ1NDY4OTNkY2FjOTUwMzI5ZDYyMWI2YjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cApAQCAtODEyLDEwICs4MTIsMTcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJiBjYWMKICAgICB9CiB9
CiAKLWJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJ
bnRlcmNlcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0Fn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKLSAgICAg
ICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7Cisg
ICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
SW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmIChhdXRvKiBu
ZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgp
KQorICAgICAgICByZXR1cm4gbmV0d29ya0FnZW50LT5zaG91bGRJbnRlcmNlcHRSZXF1ZXN0KHJl
cXVlc3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtODI2LDYgKzgzMywxMiBAQCBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQoreworICAg
IGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5l
dHdvcmtBZ2VudCgpKQorICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJlcXVlc3QobG9h
ZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0byog
bmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAppbmRleCBjN2I2NmJhMTE1NWQ5MWIzYzVlMGUzMTJlMTRiZDJmZTczMjg2ZDI1Li5k
ZjkzOTA1YjQ1YmFlNGM3NGE3MWQxZWFlODljMTI1ZTAxODNhMjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2
ICs0NSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2Vi
QW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKQEAgLTIzNCw4
ICsyMzUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lD
YWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbElu
dGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICBzdGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZElu
dGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBz
dGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtNDQyLDggKzQ0NSwxMCBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2Fj
aGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3Rh
dGljIGJvb2wgd2lsbEludGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsK
QEAgLTEyNTcsMTEgKzEyNjIsMTkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJgogICAgIHdpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJv
b2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdp
bGxJbnRlcmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7Cisg
ICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVx
dWVzdCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCByZXF1ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyNzMsNiArMTI4Niwx
MyBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KCpsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVl
c3QoKSkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckZyYW1lKGxvYWRlci5mcmFtZSgpKSkKKyAgICAgICAgaW50ZXJjZXB0UmVxdWVz
dEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9
CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZShmcmFtZSwgcmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXggOTU0YWFmMTIx
YTlmYTUwN2Q4M2JjMTBhZTM3ZGUxZjEyOGY3ZGNmYy4uZTM4ZWYzOThlN2U5YWZjMWUwMWE1NGI5
Y2U2OGZjMjM1OThlOTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMwLDExICszMCwy
MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZy
YW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChmcmFtZSwgcmVxdWVz
dCk7Cit9CisKIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9u
c2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4
IGI2N2U4OWI4MGI0ZTdhODU4NmNhYzgxYWRlNWQ1OGExYmNiMGQ0MzEuLmEzMmY4NzdlYWEwNGYy
N2QxMjEyNzBjZmY1YWNjM2IwMzJjMWM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDE0
ICszNiwyNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wg
c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1l
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25z
dCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgc2hvdWxk
SW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKK2lu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0
UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOworICAgIGlmICgh
ZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNl
cHRSZXF1ZXN0SW50ZXJuYWwoKmZyYW1lLCByZXF1ZXN0KTsKK30KKwogaW5saW5lIGJvb2wgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25z
dCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CkBAIC01Myw2ICs2NiwxMiBAQCBp
bmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lKgogICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZUludGVybmFsKCpmcmFtZSwgcmVzcG9uc2UpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxv
YWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBo
YW5kbGVyKQoreworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNo
b3VsZEludGVyY2VwdFJlcXVlc3QobG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsK
KyAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
K30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZElu
dGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4
IGFmY2RkMmE3ZmFmZmUwYmVjOTgyMDcyZDg5NGJjODVjNmUzMGM0NGMuLjZmMDMyYzcwZTU2YWZh
M2JkNGM1ZjgwNWZmNDBhMDczNGVjMzhmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9y
bURhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgpAQCAtODQxLDEyICs4NDIsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQogICAgIG1fcmVzb3VyY2Vz
RGF0YS0+Y2xlYXIoKTsKICAgICBtX2V4dHJhUmVxdWVzdEhlYWRlcnMuY2xlYXIoKTsKIAorICAg
IGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgY29udGludWVQZW5kaW5nUmVzcG9uc2Vz
KCk7CiAKICAgICBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChmYWxzZSk7CiB9CiAKLWJvb2wg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKK2Jvb2wgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCwgTmV0d29ya1N0YWdl
IG5ldHdvcmtTdGFnZSkKIHsKICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAK
QEAgLTg1NSw2ICs4NTcsMTAgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZElu
dGVyY2VwdChVUkwgdXJsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8m
IGludGVyY2VwdCA6IG1faW50ZXJjZXB0cykgeworICAgICAgICBpZiAoaW50ZXJjZXB0Lm5ldHdv
cmtTdGFnZSAhPSBuZXR3b3JrU3RhZ2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKGludGVyY2VwdC51cmwuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9IGludGVyY2VwdC5pc1JlZ2V4ID8gQ29udGVu
dFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6UmVnZXggOiBDb250ZW50U2VhcmNo
VXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpFeGFjdFN0cmluZzsKICAgICAgICAgYXV0byBy
ZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVJlZ3VsYXJFeHByZXNzaW9uRm9y
U2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlLCBzZWFy
Y2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJlZ2V4Lm1hdGNoKHVybFN0cmluZykgIT0gLTEp
CkBAIC04NjQsNiArODcwLDEzIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJ
bnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpCit7CisgICAgZm9yIChhdXRv
JiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnZhbHVlcygpKQor
ICAgICAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxSZXF1ZXN0KCk7Cisg
ICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwogdm9pZCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7CiAgICAgZm9yIChh
dXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZXMudmFsdWVzKCkpCkBAIC0xMDI5LDE4ICsxMDQyLDE4IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Ym9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCi0gICAgaWYgKCFt
X2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpIHsK
KyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAgY29udGludWVQZW5k
aW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9u
YWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNv
bnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1Jl
Z2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3
b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0
YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsK
LSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3Rh
Z2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3Bl
Y3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFu
ZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3du
IG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNDksMjEgKzEwNjIsMTgg
QEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRp
dmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgpCiAg
ICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRlcmNlcHQubmV0d29y
a1N0YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5h
cHBlbmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCi0gICAgICAgIGVycm9yU3RyaW5nID0gIklu
dGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVhZHkgZXhpc3RzIl9z
OworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcmNlcHQgZm9yIGdpdmVuIHVybCwgZ2l2ZW4g
aXNSZWdleCBhbmQgZ2l2ZW4gc3RhZ2UgYWxyZWFkeSBleGlzdHMiX3M7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpyZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0
YWdlU3RyaW5nKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlv
bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgpCiB7Ci0gICAgaWYgKG5ldHdvcmtTdGFnZVN0
cmluZykgewotICAgICAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KCpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAg
ICAgICBpZiAoIW5ldHdvcmtTdGFnZSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtl
U3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCAqbmV0d29ya1N0YWdlU3RyaW5nKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIGF1dG8gbmV0d29ya1N0YWdlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4obmV0d29y
a1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtTdGFnZSkgeworICAgICAgICBlcnJvclN0
cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFn
ZVN0cmluZyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBJbnRlcmNlcHQgaW50ZXJj
ZXB0OwpAQCAtMTA3MiwxOSArMTA4MiwyNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUwogICAg
ICAgICBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSA9ICpvcHRpb25hbENhc2VTZW5zaXRpdmU7CiAg
ICAgaWYgKG9wdGlvbmFsSXNSZWdleCkKICAgICAgICAgaW50ZXJjZXB0LmlzUmVnZXggPSAqb3B0
aW9uYWxJc1JlZ2V4OwotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgaW50ZXJjZXB0aW5nIHJlcXVl
c3RzLgorICAgIGludGVyY2VwdC5uZXR3b3JrU3RhZ2UgPSBuZXR3b3JrU3RhZ2UudmFsdWUoKTsK
IAogICAgIGlmICghbV9pbnRlcmNlcHRzLnJlbW92ZUFsbChpbnRlcmNlcHQpKQogICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIGludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBp
c1JlZ2V4Il9zOwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2Vw
dFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtT
dGFnZTo6UmVxdWVzdCkKKyAgICAgICAgfHwgc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCks
IE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UpOworfQorCitib29sIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSk7CisgICAgcmV0
dXJuIHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3Qp
OwogfQogCiBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkyLDcgKzExMTAsMjEg
QEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxl
ZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChy
ZXNwb25zZS51cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwo
KSwgTmV0d29ya1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBB
U1NFUlQobV9lbmFibGVkKTsKKyAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKKwor
ICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChsb2Fk
ZXIuaWRlbnRpZmllcigpKTsKKyAgICBpZiAobV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY29u
dGFpbnMocmVxdWVzdElkKSkgeworICAgICAgICBoYW5kbGVyKGxvYWRlci5yZXF1ZXN0KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNl
dChyZXF1ZXN0SWQsIG1ha2VVbmlxdWU8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+KCZsb2FkZXIs
IFdURk1vdmUoaGFuZGxlcikpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdElu
dGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVy
LnJlcXVlc3QoKSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCkBAIC0xMTEyLDE1ICsxMTQ0LDY5
IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVz
cG9uc2VJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25z
ZShyZXNwb25zZSwgbnVsbHB0cikpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
aW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZykKIHsKLSAgICBhdXRvIHBlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7
Ci0gICAgaWYgKCFwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKLSAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVz
dElkIl9zOworICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5z
cGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAo
IW5ldHdvcmtTdGFnZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25v
d24gbmV0d29ya1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG5ldHdvcmtTdGFnZS52YWx1ZSgpKSB7CisgICAgY2Fz
ZSBOZXR3b3JrU3RhZ2U6OlJlcXVlc3Q6CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gcGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJl
cXVlc3RJZCk7CisgICAgICAgICAgICBpZiAocGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpCisgICAg
ICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlcXVlc3QtPmNvbnRpbnVlV2l0aE9yaWdpbmFs
UmVxdWVzdCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgY2FzZSBOZXR3b3JrU3Rh
Z2U6OlJlc3BvbnNlOgorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHBlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7
CisgICAgICAgICAgICBpZiAocGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKQorICAgICAgICAgICAg
ICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNl
KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJl
cXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nKiBtZXRob2QsIGNvbnN0IFN0cmluZyogdXJsLCBjb25zdCBKU09OOjpPYmpl
Y3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBwZW5kaW5n
UmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAg
ICBpZiAocGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9
IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QgPSBsb2FkZXItPnJlcXVlc3QoKTsKKyAgICAgICAgaWYgKHVybCkKKyAgICAgICAg
ICAgIHJlcXVlc3Quc2V0VVJMKFVSTCh7IH0sICp1cmwpKTsKKyAgICAgICAgaWYgKG1ldGhvZCkK
KyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgqbWV0aG9kKTsKKyAgICAgICAgaWYg
KGhlYWRlcnMpIHsKKyAgICAgICAgICAgIEhUVFBIZWFkZXJNYXAgZXhwbGljaXRIZWFkZXJzOwor
ICAgICAgICAgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiAqaGVhZGVycykgeworICAgICAg
ICAgICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUt
PmFzU3RyaW5nKGhlYWRlclZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRIZWFk
ZXJzLmFkZChrZXksIGhlYWRlclZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAg
ICAgICB9CisgICAgICAgIGlmIChwb3N0RGF0YSkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcjsKKyAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKCpwb3N0RGF0YSwgYnVm
ZmVyKSkgeworICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUg
Z2l2ZW4gcG9zdERhdGEiX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKGJ1ZmZl
cikpOworICAgICAgICB9CisgICAgICAgIHBlbmRpbmdSZXF1ZXN0LT5jb250aW51ZVdpdGhSZXF1
ZXN0KHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlLT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKKyAgICBlcnJvclN0
cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVl
c3RJZCJfczsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhS
ZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5n
KiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQpAQCAtMTE2Niw2ICsxMjUyLDkxIEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zCiAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25k
KG92ZXJyaWRlUmVzcG9uc2UsIG92ZXJyaWRlRGF0YSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwg
Ym9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBj
b25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykKK3sK
KyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFr
ZShyZXF1ZXN0SWQpOworICAgIGlmICghcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1
ZXN0SWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8UmVzb3VyY2VM
b2FkZXI+IGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICBpZiAo
IWxvYWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0
byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
aWYgKGJhc2U2NEVuY29kZWQpIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAg
ICAgICAgaWYgKCFiYXNlNjREZWNvZGUoY29udGVudCwgYnVmZmVyKSkgeworICAgICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBjb250ZW50Il9zOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5n
dGgoKSk7CisKKyAgICAvLyBNaW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9yIC0gcmVwb3J0IGRp
ZFJlY2VpdmVSZXNwb25zZSAmIGRpZEZpbmlzaExvYWRpbmcuCisgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZShwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXItPnVybCgpLCBtaW1lVHlwZSwgZGF0
YS0+c2l6ZSgpLCBTdHJpbmcoKSk7CisgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVz
cG9uc2U6OlNvdXJjZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOworICAgIHJlc3BvbnNlLnNldEhUVFBT
dGF0dXNDb2RlKHN0YXR1cyk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoc3RhdHVz
VGV4dCk7CisgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAgZm9yIChhdXRv
JiBoZWFkZXIgOiBoZWFkZXJzKSB7CisgICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAg
ICAgaWYgKGhlYWRlci52YWx1ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAgICAgICAg
ZXhwbGljaXRIZWFkZXJzLmFkZChoZWFkZXIua2V5LCBoZWFkZXJWYWx1ZSk7CisgICAgfQorICAg
IHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsK
KyAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRU
eXBlLCByZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSwgW2xvYWRlciwgYnVmZmVyID0gZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgpIG11
dGFibGUgeworICAgICAgICBpZiAoYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBsb2FkZXIt
PmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSwgRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5l
dHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICB9KTsKK30KKwordm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGVTdHJpbmcp
Cit7CisgICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3Rz
LnRha2UocmVxdWVzdElkKTsKKyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4g
cmVxdWVzdElkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlciA9IHBlbmRpbmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICBpZiAoIWxv
YWRlci0+aWRlbnRpZmllcigpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBh
Ym9ydCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlPihlcnJvclR5cGVTdHJpbmcpOwor
ICAgIGlmICghZXJyb3JUeXBlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygi
VW5rbm93biBlcnJvclR5cGU6ICJfcywgZXJyb3JUeXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgc3dpdGNoIChlcnJvclR5
cGUudmFsdWUoKSkgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVz
b3VyY2VFcnJvclR5cGU6OkdlbmVyYWw6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAiUmVxdWVzdCBpbnRl
cmNlcHRlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5
cGU6OkFjY2Vzc0NvbnRyb2w6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAiQWNjZXNzIGRlbmllZCJfcywg
UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkNh
bmNlbGxhdGlvbjoKKyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGNhbmNlbGVkIl9zLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0
OgorICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgbG9hZGVyLT51cmwoKSwgIlJlcXVlc3QgdGltZWQgb3V0Il9zLCBSZXNvdXJjZUVycm9y
OjpUeXBlOjpUaW1lb3V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbG9hZGVy
LT5kaWRGYWlsKGVycm9yKTsKK30KKwogYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZFRyZWF0QXNUZXh0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgcmV0dXJuIHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0LyIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaAppbmRleCBiZmQxMzFlOWI1ODU2Yzg0ZGE3NzI0ODA1ZTcxMzk3YjdjNzQ4NmE5Li40YzVl
ODFlNzhiYWRkMTY4OGQ2NjliMGMyNTM5NGI2MGJkYThiMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAg
LTg4LDEwICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZXJpYWxpemVkQ2VydGlmaWNh
dGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBzZXJpYWxp
emVkQ2VydGlmaWNhdGUpIGZpbmFsOwogICAgIHZvaWQgcmVzb2x2ZVdlYlNvY2tldChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3Vw
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIGZp
bmFsOwogICAgIHZvaWQgc2V0SW50ZXJjZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wg
ZW5hYmxlZCkgZmluYWw7Ci0gICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
aXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZv
aWQgcmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmlu
ZyogbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsKLSAgICB2b2lkIGludGVyY2VwdENvbnRpbnVl
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpIGZpbmFsOworICAgIHZvaWQg
YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25z
dCBib29sKiBpc1JlZ2V4KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0
cmluZywgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCkgZmlu
YWw7CisgICAgdm9pZCBpbnRlcmNlcHRDb250aW51ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7Cisg
ICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG1ldGhvZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0
IEpTT046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkgZmluYWw7CiAg
ICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNv
bnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0
YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBp
bnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQs
IGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAgLTExOCw5ICsxMjEs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgbWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVy
Jik7CiAgICAgdm9pZCBzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxl
U3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50Jik7Ci0gICAgYm9vbCB3aWxsSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHdpbGxJbnRlcmNlcHQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZv
aWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNo
UmVzdWx0Pj4mKTsKICAgICB2b2lkIHNlYXJjaEluUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRp
dmUsIGJvb2wgaXNSZWdleCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jik7CkBAIC0xNDAsNyArMTQ1LDkgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7
CiAKLSAgICBib29sIHNob3VsZEludGVyY2VwdChVUkwpOworICAgIHVzaW5nIE5ldHdvcmtTdGFn
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZTsKKyAgICBib29s
IHNob3VsZEludGVyY2VwdChVUkwsIE5ldHdvcmtTdGFnZSk7CisgICAgdm9pZCBjb250aW51ZVBl
bmRpbmdSZXF1ZXN0cygpOwogICAgIHZvaWQgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAK
ICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CkBAIC0xNTMsNiArMTYwLDMxIEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgdGltZXN0
YW1wKCk7CiAKKyAgICBjbGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCB7CisgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KTsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBQZW5kaW5nSW50ZXJj
ZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAg
ICAgOiBtX2xvYWRlcihsb2FkZXIpCisgICAgICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIHsgfQorCisgICAgICAgIHZvaWQg
Y29udGludWVXaXRoT3JpZ2luYWxSZXF1ZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFtX2xvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICAgICAgICAgICAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKG1fbG9hZGVyLT5yZXF1ZXN0KCkpOworICAgICAgICB9CisKKyAgICAg
ICAgdm9pZCBjb250aW51ZVdpdGhSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihyZXF1ZXN0KTsK
KyAgICAgICAgfQorCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KCkgPSBkZWZhdWx0
OworICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgICAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiBtX2NvbXBsZXRpb25I
YW5kbGVyOworICAgIH07CisKICAgICBjbGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2Ugewog
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwog
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTIwNCwxNSArMjM2LDE4IEBAIHBy
aXZhdGU6CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSB7
IHRydWUgfTsKICAgICAgICAgYm9vbCBpc1JlZ2V4IHsgZmFsc2UgfTsKKyAgICAgICAgTmV0d29y
a1N0YWdlIG5ldHdvcmtTdGFnZSB7IE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UgfTsKIAogICAgICAg
ICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVyY2VwdCYgb3RoZXIpIGNvbnN0CiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1cmwgPT0gb3RoZXIudXJsCiAgICAgICAgICAg
ICAgICAgJiYgY2FzZVNlbnNpdGl2ZSA9PSBvdGhlci5jYXNlU2Vuc2l0aXZlCi0gICAgICAgICAg
ICAgICAgJiYgaXNSZWdleCA9PSBvdGhlci5pc1JlZ2V4OworICAgICAgICAgICAgICAgICYmIGlz
UmVnZXggPT0gb3RoZXIuaXNSZWdleAorICAgICAgICAgICAgICAgICYmIG5ldHdvcmtTdGFnZSA9
PSBvdGhlci5uZXR3b3JrU3RhZ2U7CiAgICAgICAgIH0KICAgICB9OwogICAgIFZlY3RvcjxJbnRl
cmNlcHQ+IG1faW50ZXJjZXB0czsKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRy
PFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0Pj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHM7CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVzcG9u
c2U+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXM7CiAKICAgICAvLyBGSVhNRTogSW5zcGVj
dG9yTmV0d29ya0FnZW50IHNob3VsZCBub3QgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDIzMWVkZWM4Y2NjNzFkNjUyMTcxMDYzNjNmNWNjMzQ5OTBhMTY0N2Uu
LjY1OWUyZmU4OTA3YjMxNTk3NjYwYTdkZGM0OGI5NDVkMzNmMGY1ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAt
ODQ2LDcgKzg0Niw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAKICAgICByZXF1ZXN0LnVw
ZGF0ZVJlZmVycmVyUG9saWN5KGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5yZWZlcnJlclBvbGlj
eSgpIDogUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsKIAotICAgIGlm
IChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KCZmcmFtZSwg
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEludGVyY2VwdCgmZnJhbWUsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQog
ICAgICAgICByZXF1ZXN0LnNldENhY2hpbmdQb2xpY3koQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dD
YWNoaW5nKTsKIAogICAgIGF1dG8mIHBhZ2UgPSAqZnJhbWUucGFnZSgpOwpAQCAtMTQzNiw3ICsx
NDM2LDcgQEAgVmVjdG9yPFJlZjxTVkdJbWFnZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjphbGxD
YWNoZWRTVkdJbWFnZXMoKSBjb25zdAogCiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQog
ewotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0
KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQoZnJhbWUoKSwgcmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChSZXNvdXJjZUVycm9yIHsg
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51
cmwoKSwgIkluc3BlY3RvciBpbnRlcmNlcHQiX3MgfSk7CiAKICAgICBpZiAocmVxdWVzdC5jaGFy
c2V0KCkuaXNFbXB0eSgpICYmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQg
fHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3
b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDkzNzYzNDliOWRhYmExMDIzM2JhMDFiZDc2
NDhhZjA3OWFhMmEwZjUuLmY4ZDE0Yzg0MzczZmNkNTM2ZjVkNDAxYjIyMDgzMTAyMjdlYThhYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC0xNTksOSArMTU5LDkgQEAg
V0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsUmVzb3VyY2VPdmVycmlkZS5kaXNhYmxl
ZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRl
cmNlcHRpb24uaW52b2tlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxvY2Fs
UmVzb3VyY2VPdmVycmlkZS51cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2U6
IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3Zl
cnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVn
ZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zNjQsNyArMzY0LDcgQEAgV0kuTmV0
d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAg
ICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZl
LAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4
LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5l
dHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNw
ZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAg
ICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5ldHdv
cmsuYWRkSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0zOTcsNyArMzk3LDcgQEAgV0ku
TmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAg
ICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0
aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1Jl
Z2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVt
Lk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAg
ICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5l
dHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC05MDYsMTIgKzkwNiwy
MCBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZGVsZXRl
KHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICByZXF1ZXN0SW50ZXJjZXB0ZWQodGFy
Z2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQs
IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0pOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50
ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbGV0
IHVybCA9IFdJLnVybFdpdGhvdXRGcmFnbWVudChyZXNwb25zZS51cmwpOwogICAgICAgICBsZXQg
bG9jYWxSZXNvdXJjZU92ZXJyaWRlID0gdGhpcy5sb2NhbFJlc291cmNlT3ZlcnJpZGVGb3JVUkwo
dXJsKTsKICAgICAgICAgaWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUgfHwgbG9jYWxSZXNvdXJj
ZU92ZXJyaWRlLmRpc2FibGVkKSB7Ci0gICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50Lmlu
dGVyY2VwdENvbnRpbnVlKHJlcXVlc3RJZCk7CisgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0Fn
ZW50LmludGVyY2VwdENvbnRpbnVlLmludm9rZSh7CisgICAgICAgICAgICAgICAgcmVxdWVzdElk
LAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5O
ZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xMzc3LDcgKzEzODUsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9
IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB1cmw6
IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBs
b2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgaXNSZWdl
eDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICBuZXR3b3JrU3Rh
Z2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwK
KyAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3Jr
U3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgIH07CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAo
aU9TIDEzLjApOiBOZXR3b3JrLmFkZEludGVyY2VwdGlvbiAvIE5ldHdvcmsucmVtb3ZlSW50ZXJj
ZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0xNDMzLDQgKzE0NDEsNSBAQCBXSS5OZXR3b3JrTWFu
YWdlci5FdmVudCA9IHsKICAgICBCb290c3RyYXBTY3JpcHREZXN0cm95ZWQ6ICJuZXR3b3JrLW1h
bmFnZXItYm9vdHN0cmFwLXNjcmlwdC1kZXN0cm95ZWQiLAogICAgIExvY2FsUmVzb3VyY2VPdmVy
cmlkZUFkZGVkOiAibmV0d29yay1tYW5hZ2VyLWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLWFkZGVk
IiwKICAgICBMb2NhbFJlc291cmNlT3ZlcnJpZGVSZW1vdmVkOiAibmV0d29yay1tYW5hZ2VyLWxv
Y2FsLXJlc291cmNlLW92ZXJyaWRlLXJlbW92ZWQiLAorICAgIFJlcXVlc3RJbnRlcmNlcHRlZDog
Im5ldHdvcmstbWFuYWdlci1yZXF1ZXN0LWludGVyY2VwdGVkIgogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdv
cmtPYnNlcnZlci5qcwppbmRleCA1OWMyOWM5YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgw
MGFhLi5mZTg4MjlhNzFiZmQwZWVkODU2YjQxYzNhYWVjZTZhZTdmMWExNGQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2Jz
ZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvTmV0d29ya09ic2VydmVyLmpzCkBAIC0xMDgsNiArMTA4LDExIEBAIFdJLk5ldHdvcmtPYnNl
cnZlciA9IGNsYXNzIE5ldHdvcmtPYnNlcnZlciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlz
cGF0Y2hlcgogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogICAgIH0KIAorICAg
IHJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICBX
SS5uZXR3b3JrTWFuYWdlci5yZXF1ZXN0SW50ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0
SWQsIHJlcXVlc3QpOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQocmVxdWVzdElk
LCByZXNwb25zZSkKICAgICB7CiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlc3BvbnNlSW50
ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApp
bmRleCAwM2ViZDg5NDRhYTFiOWJjYmNlZWNiZDVmZGQxNjE5YzVhY2E4ZGFjLi5jNWFmZmZkZDI4
ZWY5YTcxZTA2ZTRkNzZhNDA0Mjc5ZjNhNjZhMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01OCw2ICs1
OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1TdHJhdGVnaWVzLmg+CkBAIC0yMzAsOCArMjMxLDE2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJl
c291CiAKICAgICBpZiAoIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VM
b2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lf
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVs
ZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MiKTsKLSAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5l
dHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRy
YWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKLSAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIgfHwgIUluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxk
SW50ZXJjZXB0UmVxdWVzdChyZXNvdXJjZUxvYWRlci5mcmFtZSgpLCByZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCkpKSB7CisgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3Mo
cmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVm
ZmVyaW5nVGltZShyZXNvdXJjZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0
KHJlc291cmNlTG9hZGVyLCBbdGhpcywgcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVm
UHRyKCZyZXNvdXJjZUxvYWRlciksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcmVzb3VyY2VdKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29y
a1Byb2Nlc3MoKnByb3RlY3RlZFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCB0cmFja2luZ1BhcmFt
ZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1C
dWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0p
OwogICAgIH0KIAogICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyIpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVf
aHR0cF9zZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2
ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQppbmRleCA4YmE5NGNjZTk5MTE3ZTQ0OTE3ZTUwNGY3
MDI1ZWQyZmEzODA1MDlkLi43MzlhNzIyZGQ2YTBjZmVkN2FjMmU5ZTkyYWQ2M2E0Mzk5ZDdhZmI3
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJz
L2FwYWNoZV9odHRwX3NlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQpAQCAtMTc5LDcgKzE3OSw2IEBA
IGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJC
YXNlKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnRfb2JqLmhvc3QucGxhdGZvcm0KIAogICAg
IGRlZiBfc3Bhd25fcHJvY2VzcyhzZWxmKToKLSAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcg
JXMgc2VydmVyLCBjbWQ9IiVzIicgJSAoc2VsZi5fbmFtZSwgc3RyKHNlbGYuX3N0YXJ0X2NtZCkp
KQogICAgICAgICByZXR2YWwsIGVyciA9IHNlbGYuX3J1bihzZWxmLl9zdGFydF9jbWQpCiAgICAg
ICAgIGlmIHJldHZhbCBvciBsZW4oZXJyKToKICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3NlcnZl
cl9lcnJvcignRmFpbGVkIHRvIHN0YXJ0ICVzJyAlIHNlbGYuX25hbWUsIGVyciwgcmV0dmFsKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDY5YzljYWEwMzcwODBjYzJkNWYxY2I2ZDU0N2MxNmI1ZGRhNTVjY2EuLjk2YzQyNDFh
NzFiNGViY2I0MTYzY2MxYWJjMWE1MzBhNzMwMTk4OGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAor
MjAyMC0wNi0wMyAgUGF2ZWwgIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yaworICAgICAgICBw
cm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3Rp
ZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxm
aWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcg
YW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1h
aW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNl
LXdpdGgtZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3Iu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Uu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFn
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qczoK
KyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNl
LW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNvbjogQWRkZWQuCisKIDIwMjAtMDYt
MDMgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBEaXNhbGxvdyByZXNw
b25zZXMgd2hlbiBhIHJlc3BvbnNlIGNvbnRhaW5zIGludmFsaWQgaGVhZGVyIHZhbHVlcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIxMjU5MDQ4MzVlZjEwYjZjMDYwMzRmNjE1ZjNkZWYx
MThmOWVhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzIEBACitBTEVSVDogT1JJR0lOQUwgSFRNTCBDT05URU5UCitBTEVSVDogUkVQ
TEFDRUQgSFRNTCBDT05URU5UCitPdmVycmlkZGVuIHBhZ2UgY29udGVudApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291
cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMTI1OTA0ODM1ZWYx
MGI2YzA2MDM0ZjYxNWYzZGVmMTE4ZjllYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVz
b3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitBTEVSVDog
T1JJR0lOQUwgSFRNTCBDT05URU5UCitBTEVSVDogUkVQTEFDRUQgSFRNTCBDT05URU5UCitPdmVy
cmlkZGVuIHBhZ2UgY29udGVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVz
cG9uc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTU2MDg4OTVlOThkMWRiYThmNTZjNTk4YjU1OWU3Mjg4MjA5OWJhZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKQEAgLTAsMCArMSw0NyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9u
c2UiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdC5NYWluUmVzb3VyY2Ugd2l0aCByZXNwb25zZSIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiTWFpbiByZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9uIG5l
eHQgcGFnZSBsb2FkIGFuZCBmdWxmaWxscyByZXF1ZXN0IiwKKyAgICAgICAgYXN5bmMgdGVzdCgp
IHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAg
ICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9r
ZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5o
dG1sIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdv
cmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
bGV0IGludGVyY2VwdFdpdGhSZXNwb25zZSA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAg
IGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAg
ICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Uu
aW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAg
ICAgICBtaW1lVHlwZTogInRleHQvaHRtbCIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6
IGA8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2lu
c3BlY3Rvci10ZXN0LmpzIj48L2ArYHNjcmlwdD48L2hlYWQ+PGJvZHk+PHA+T3ZlcnJpZGRlbiBw
YWdlIGNvbnRlbnQ8L3A+PHNjcmlwdD5hbGVydCgiUkVQTEFDRUQgSFRNTCBDT05URU5UIik7IFRl
c3RQYWdlLmNvbXBsZXRlVGVzdCgpOzwvYCtgc2NyaXB0PjwvYm9keT48L2h0bWw+YCwKKyAgICAg
ICAgICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
IHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAg
ICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0
aFJlc3BvbnNlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25v
cmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVz
dCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5nIHRoZSBtYWluIHJlc291cmNlIGxvYWQgd2l0aCBy
ZXNwb25zZS48L3A+Cis8c2NyaXB0PmFsZXJ0KCJPUklHSU5BTCBIVE1MIENPTlRFTlQiKTs8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1tYWluLXJlc291cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcxNGE2OGFlMTM3ZjUwMmIxYjc0
ZDI1ZjM1ZjBiY2ZjYTllNWFmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5o
dG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxl
dCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNl
cHRXaXRoUmVxdWVzdCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiTWFpbiByZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9uIG5leHQg
cGFnZSBsb2FkIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJn
ZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5O
ZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJs
OiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LW1haW4tcmVzb3VyY2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3Rv
ckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4g
eworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZl
bnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFdp
dGhSZXF1ZXN0Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qt
b3ZlcnJpZGVuLXBhZ2UuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZAorICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdElu
dGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3Vy
Y2VzOiB0cnVlfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNl
c0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgbWFp
biByZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3JpcHQ+YWxlcnQoIk9SSUdJTkFMIEhUTUwgQ09OVEVO
VCIpOzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdi
ZGI5MGZiMzI4NzFhZjBmYTE1YmU4Zjc1YzY3ZjEwZDVkMDdlNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3QtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdCByZXF1ZXN0
IGludGVyY2VwdGlvbiBhbHRlcmluZyByZXF1ZXN0IHByb3BlcnRpZXMuCisKKworPT0gUnVubmlu
ZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0CistLSBSdW5uaW5nIHRl
c3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZAorTWV0aG9kPVBPU1QKKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5IZWFkZXJzCitP
dmVycmlkZW4gaGVhZGVyOm92ZXJyaWRlbgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0LlBvc3REYXRhCitPdmVycmlkZW4gdmFsdWU6IG92ZXJyaWRlbgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMzYTk1ODA4ODIxODcwODIyOWU0NzUyYjkzN2ZlOGU4YjdhMWE4NmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbApAQCAtMCwwICsxLDEyMSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
YXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkKK3sKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2Fp
dCBmZXRjaCh1cmwpOworICAgIHJldHVybiBhd2FpdCByZXNwb25zZS50ZXh0KCk7Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIHBvc3REYXRhKHVybCkKK3sKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBm
ZXRjaCh1cmwsIHsKKyAgICAgICAgbWV0aG9kOiAiUE9TVCIsCisgICAgICAgIGhlYWRlcnM6IHsK
KyAgICAgICAgICAgICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxl
bmNvZGVkIgorICAgICAgICB9LAorICAgICAgICBib2R5OiAidmFsdWU9b3JpZ2luYWwiCisgICAg
fSk7CisgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLnRleHQoKTsKK30KKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJO
ZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24iLAorICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5n
TWFpblRhcmdldCgpOworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJ
bnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9t
ZXRob2QiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0
d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAg
ICAgICAgICAgaWYgKCFyZXF1ZXN0LnVybC5pbmNsdWRlcygnP21ldGhvZCcpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
SWQsCisgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLAorICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBp
bnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0
IHRhcmdldC5SdW50aW1lQWdlbnQuZXZhbHVhdGUoImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVy
Y2VwdC1lY2hvLnBocD9tZXRob2QnKSIpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0
YXJnZXQuUnVudGltZUFnZW50LmF3YWl0UHJvbWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0SWQs
IHRydWUpOworICAgICAgICAgICAgbGV0IGRhdGEgPSBldmFsKCcoJyArIHJlc3BvbnNlLnJlc3Vs
dC52YWx1ZSArICcpJyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiTWV0aG9kPSIg
KyBkYXRhLm1ldGhvZCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5IZWFkZXJzIiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGhlYWRlcnMgaW50ZXJjZXB0aW9u
IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5h
c3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdl
bnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNo
by5waHA/aGVhZGVycyIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQu
RW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAg
ICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsK
KyAgICAgICAgICAgICAgICBpZiAoIXJlcXVlc3QudXJsLmluY2x1ZGVzKCc/aGVhZGVycycpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdv
cmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2UoeworICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgInZhbHVlIjogIm92
ZXJyaWRlbiIgfSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAg
ICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2Vy
LkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisgICAg
ICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRl
KCJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/aGVhZGVycycpIik7Cisg
ICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuYXdhaXRQcm9t
aXNlKHJlc3BvbnNlLnJlc3VsdC5vYmplY3RJZCwgdHJ1ZSk7CisgICAgICAgICAgICBsZXQgZGF0
YSA9IGV2YWwoJygnICsgcmVzcG9uc2UucmVzdWx0LnZhbHVlICsgJyknKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJPdmVycmlkZW4gaGVhZGVyOiIgKyBkYXRhLmhlYWRlcnMudmFs
dWUpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuUG9zdERhdGEiLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgcG9zdCBkYXRhIGludGVyY2VwdGlvbiIsCisgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdN
YWluVGFyZ2V0KCk7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZElu
dGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP3Bv
c3REYXRhIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5l
dHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgbGV0IGludGVyY2VwdFdpdGhSZXF1ZXN0ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAg
ICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAg
ICAgICAgICAgIGlmICghcmVxdWVzdC51cmwuaW5jbHVkZXMoJz9wb3N0RGF0YScpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2Vu
dC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLAorICAgICAgICAgICAg
ICAgICAgICBwb3N0RGF0YTogYnRvYSgidmFsdWU9b3ZlcnJpZGVuIiksCisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQs
IGludGVyY2VwdFdpdGhSZXF1ZXN0KTsKKworICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdh
aXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgicG9zdERhdGEoJ3Jlc291cmNlcy9pbnRl
cmNlcHQtZWNoby5waHA/cG9zdERhdGEnKSIpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2Fp
dCB0YXJnZXQuUnVudGltZUFnZW50LmF3YWl0UHJvbWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0
SWQsIHRydWUpOworICAgICAgICAgICAgbGV0IGRhdGEgPSBldmFsKCcoJyArIHJlc3BvbnNlLnJl
c3VsdC52YWx1ZSArICcpJyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiT3ZlcnJp
ZGVuIHZhbHVlOiAiICsgZGF0YS5wb3N0LnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24g
YWx0ZXJpbmcgcmVxdWVzdCBwcm9wZXJ0aWVzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGU1ZjRlMDdlZmI2MjZhM2ZhM2ZjZTk1NmQzYzUxMWY5ODAyM2Fh
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsOCBAQAorQUxFUlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURF
TiBvdmVycmlkZS5qcyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGlu
ZyB0aGUgc3VicmVzb3VyY2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdC5TdWJyZXNvdXJjZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
ZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kOTllNjBjY2Y1MTE5ZTA0YzA3ZWMxNGIxOThhMmM3MGQ1Y2NiZGIwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDcgQEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVx
dWVzdCBpbnRlcmNlcHRpb24gd2l0aCBlcnJvciBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisK
KworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoRXJy
b3IKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVz
b3VyY2Ugd2l0aCBlcnJvcgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3Iu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0MDgxMTgz
NGZmY2ZmMzhmYWZjNDk4NzVjZDAyZGQ0OWZkOTg1NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5j
U3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIpOworCisgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1
YnJlc291cmNlIHdpdGggZXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNl
IHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBlcnJvciIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7
CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5p
bnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUuanMiLAorICAgICAgICAgICAgICAgIHN0
YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwK
KyAgICAgICAgICAgIH0pOworICAgIAorICAgICAgICAgICAgbGV0IGludGVyY2VwdFdpdGhSZXF1
ZXN0ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJ
ZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3Jr
QWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvci5pbnZva2UoeworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIGVycm9yVHlwZTogSW5zcGVjdG9y
QmFja2VuZC5FbnVtLk5ldHdvcmsuUmVzb3VyY2VFcnJvclR5cGUuR2VuZXJhbCwKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNl
cHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0
b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291
cmNlczogdHJ1ZX0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2Fz
ZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGVycm9yIGZvciB0aGUg
c3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJyaWRlLmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Ut
d2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2Ut
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNzBhMTY2Yzc2OTEzYThlZGUzMzgyZWI5YzJmOGVm
OTkyZWE3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2Ut
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxFUlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMg
VEVYVAorQUxFUlQ6IE9WRVJSSURERU4gb3ZlcnJpZGUuanMgVEVYVAorVGVzdCByZXF1ZXN0IGlu
dGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC4KKworCis9
PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25z
ZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNv
dXJjZSB3aXRoIHJlc3BvbnNlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjVjZDU1ODMxMzllMjViYjliNWVhMmRlOTQ5MTA5YmFiNzJjMTQwNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIik7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVy
Y2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCByZXNwb25zZSIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNl
IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICBJbnNwZWN0b3JUZXN0LmRlYnVn
KCk7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7Cisg
ICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZv
a2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUuanMiLAorICAgICAgICAgICAgICAgIHN0YWdl
OiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1
ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2phdmFzY3Jp
cHQiLAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgYWxlcnQoIk9WRVJSSURERU4gb3Zl
cnJpZGUuanMgVEVYVCIpOyBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJp
ZGVDb250ZW50RGlkTG9hZCIpO2AsCisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6
IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30s
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0
d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1
ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdpdGhSZXF1ZXN0KTsKKworICAgICAgICAgICAgYXdh
aXQgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRh
dGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3Qu
YXdhaXRFdmVudCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2Vw
dGlvbiB3aXRoIHJlc3BvbnNlIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ODg0YWFmYWI4YTYxNDI1M2FjNTVmZjNhZGFlZGQyNjM3MDBjNDdhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRl
QXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7CisKKyAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVz
b3VyY2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBp
bnRlcmNlcHRpb24iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRh
cmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0
Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1
cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292
ZXJyaWRlLmpzIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVt
Lk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIGxldCBpbnRlcmNlcHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAg
ICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmludm9r
ZSh7CisgICAgICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlw
dC5qcyIsCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZAorICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRl
cmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVs
b2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVl
fSk7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIk92ZXJyaWRl
Q29udGVudERpZExvYWQiKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5nIHRo
ZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhw
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50
ZXJjZXB0LWVjaG8ucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1Y2MwMDJhODhkNWU5NjMxNjVhMDBhYjk2YmMx
NGI5N2RkY2I3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKQEAgLTAsMCArMSwx
MiBAQAoreworICAgICJtZXRob2QiOiAiPD9waHAgZWNobyAkX1NFUlZFUlsnUkVRVUVTVF9NRVRI
T0QnXTsgPz4iLAorICAgICJoZWFkZXJzIjogeworPD9waHAgZm9yZWFjaCAoZ2V0YWxsaGVhZGVy
cygpIGFzICRuYW1lID0+ICR2YWx1ZSkgeyA/PgorICAgICAgICAiPD9waHAgZWNobyAkbmFtZTsg
Pz4iOiAiPD9waHAgZWNobyAkdmFsdWU7ID8+IiwKKzw/cGhwIH0gPz4gfSwKKyAgICAicG9zdCI6
IHsKKzw/cGhwIGZvcmVhY2ggKCRfUE9TVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAg
ICAgIjw/cGhwIGVjaG8gJG5hbWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8P3Bo
cCB9ID8+CisgICAgfSwKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1wYWdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMjIx
NjdlZGIwYmJlM2ZiMDcyYzQ3MWVjODIzNzQ5NTNhNWQyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNl
cHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+PC9oZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPgorICAgIDwvc2NyaXB0PgorICAgIDxib2R5Pgor
ICAgICAgICA8cD5PdmVycmlkZGVuIHBhZ2UgY29udGVudDwvcD4KKyAgICAgICAgPHNjcmlwdD5h
bGVydCgiUkVQTEFDRUQgSFRNTCBDT05URU5UIik7IFRlc3RQYWdlLmNvbXBsZXRlVGVzdCgpOzwv
c2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92
ZXJyaWRlbi1zY3JpcHQuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc3OGVjNGUyNjExNTdkMzMwOTE5YzEzMjg5OTk1NTc3OTg5MzdlYWIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCkBAIC0wLDAgKzEsMiBA
QAorYWxlcnQoIk9WRVJSSURFTiBvdmVycmlkZS5qcyBURVhUIik7CitUZXN0UGFnZS5kaXNwYXRj
aEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3Qu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wt
dGVzdC5qcwppbmRleCBhMDI2NDlkNTZiZGIzZDI4NWMxZjBkN2Y4MDBjZmU0MTA4OTIyNjQxLi44
MzFhNjFmNjc4NWU0NDg4YjEyZDdkZmRlZjFmZTY2ZDM3NTUxMjIyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcwor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wt
dGVzdC5qcwpAQCAtODcsMTIgKzg3LDE0IEBAIFRlc3RQYWdlLnJ1blRlc3QgPSB3aW5kb3cucnVu
VGVzdCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodHlwZW9mIHRlc3RGdW5jdGlvbiAhPT0gImZ1bmN0
aW9uIikgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHNlbmQgdGVzdCgpIGJlY2F1c2UgaXQg
aXMgbm90IGEgZnVuY3Rpb24uIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbGV0IHVybCA9IHRlc3RSdW5uZXIuaW5zcGVj
dG9yVGVzdFN0dWJVUkw7CiAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgYWxlcnQoIkZhaWxlZCB0
byBvYnRhaW4gaW5zcGVjdG9yIHRlc3Qgc3R1YiBVUkwuIik7CiAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVu
SW5pdGlhbGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZChpbml0aWFsaXplcnMpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTlkMTgwNTg1NzZkNzQ0YjQ4MjMxYTI3NzJhYjJhYmE4
ZmE5YjQ0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUZXN0IHJl
cXVlc3QgaW50ZXJjZXB0aW9uLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogc2V0VXAKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0
ZWQuaW50ZXJjZXB0Q29udGludWUKK1Jlc3BvbnNlIGRhdGE6ICd7ImFscGhhIjoiYmV0YSIsImdh
bW1hIjoxMjM0NX0nCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrIHJlcXVlc3QgaW50
ZXJjZXB0aW9uOiByZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0V2l0aFJlcXVlc3QKK3RleHQ6
IGludGVyY2VwdGVkIHJlcXVlc3QKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsgcmVx
dWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlCit0ZXh0OiBpbnRlcmNlcHRlZCBkYXRhCitzdGF0dXM6IDIwMAorc3RhdHVzVGV4
dDogT0sKK21pbWVUeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KK215LWhlYWRlcjogbXkt
dmFsdWUKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRp
b246IHJlcXVlc3RJbnRlcmNlcHRlZC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yCitSZXF1ZXN0
IGVycm9yOiAnUmVxdWVzdCBjYW5jZWxlZCcKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWUzYzU2MmUx
NGUxNjg2ZGI2ODg2MjI5OGZhODZmMzMxOGI0ZjQ5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0Lmh0bWwKQEAgLTAsMCAr
MSwxNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlv
biBmZXRjaERhdGEoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQg
ZmV0Y2goJ3Jlc291cmNlcy9kYXRhLmpzb24nKTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgIHRleHQ6IGF3YWl0IHJlc3BvbnNlLnRleHQoKSwKKyAgICAgICAgICAgIHN0YXR1czogcmVz
cG9uc2Uuc3RhdHVzLAorICAgICAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4
dCwKKyAgICAgICAgICAgIG1pbWVUeXBlOiByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10
eXBlJyksCisgICAgICAgICAgICBoZWFkZXI6IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdteS1oZWFk
ZXInKSwKKyAgICAgICAgfTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiBlLm1l
c3NhZ2U7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBQ
cm90b2NvbFRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7
CisKKyAgICBmdW5jdGlvbiBwcmludEZldGNoUmVzdWx0KHJlc3VsdCkKKyAgICB7CisgICAgICAg
IFByb3RvY29sVGVzdC5sb2coInRleHQ6ICIgKyByZXN1bHQudGV4dCk7CisgICAgICAgIFByb3Rv
Y29sVGVzdC5sb2coInN0YXR1czogIiArIHJlc3VsdC5zdGF0dXMpOworICAgICAgICBQcm90b2Nv
bFRlc3QubG9nKCJzdGF0dXNUZXh0OiAiICsgcmVzdWx0LnN0YXR1c1RleHQpOworICAgICAgICBQ
cm90b2NvbFRlc3QubG9nKCJtaW1lVHlwZTogIiArIHJlc3VsdC5taW1lVHlwZSk7CisgICAgICAg
IFByb3RvY29sVGVzdC5sb2coIm15LWhlYWRlcjogIiArIHJlc3VsdC5oZWFkZXIpOworICAgIH0K
KworICAgIGxldCB1cmw7CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
c2V0VXAiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IFtyZXN1bHQx
LCByZXN1bHQyLCB7cmVzdWx0fV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmVuYWJs
ZSIsIHBhcmFtczoge319KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2Fp
dENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZW5hYmxlIiwgcGFyYW1zOiB7fX0pLAorICAgICAg
ICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVudGlt
ZS5ldmFsdWF0ZSIsIHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAi
ZG9jdW1lbnQuVVJMIiwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLnNldEludGVyY2Vw
dGlvbkVuYWJsZWQiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1
ZSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAg
bGV0IGJhc2VVUkwgPSByZXN1bHQudmFsdWUuc3Vic3RyaW5nKDAsIHJlc3VsdC52YWx1ZS5sYXN0
SW5kZXhPZigiLyIpKTsKKyAgICAgICAgICAgIHVybCA9IGJhc2VVUkwgKyAiL3Jlc291cmNlcy9k
YXRhLmpzb24iOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21t
YW5kKHttZXRob2Q6ICJOZXR3b3JrLmFkZEludGVyY2VwdGlvbiIsIHBhcmFtczogeyB1cmwsIHN0
YWdlOiAicmVxdWVzdCIgfX0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uOiBy
ZXF1ZXN0SW50ZXJjZXB0ZWQuaW50ZXJjZXB0Q29udGludWUiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIlRlc3QgY29udGludWUgaW50ZXJjZXB0ZWQgcmVxdWVzdC4iLAorICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgLy8gRmV0Y2ggVVJMIGFuZCBpbnRlcmNlcHQgaXQuCisgICAg
ICAgICAgICBsZXQgW2ZldGNoUmVzdWx0UHJvbWlzZSwgaW50ZXJjZXB0ZWRFdmVudF0gPSBhd2Fp
dCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRD
b21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7CisgICAgICAgICAg
ICAgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoKSIsCisgICAgICAgICAgICAgICAgfX0p
LAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZlbnQoe2V2ZW50OiAi
TmV0d29yay5yZXF1ZXN0SW50ZXJjZXB0ZWQifSksCisgICAgICAgICAgICBdKTsKKworICAgICAg
ICAgICAgLy8gTGV0IHRoZSBsb2FkIGNvbnRpbnVlLgorICAgICAgICAgICAgbGV0IFtmZXRjaFJl
c3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJv
dG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJSdW50aW1lLmF3YWl0UHJvbWlzZSIsIHBhcmFt
czogeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlT2JqZWN0SWQ6IGZldGNoUmVzdWx0UHJv
bWlzZS5yZXN1bHQub2JqZWN0SWQsCisgICAgICAgICAgICAgICAgICAgIHJldHVybkJ5VmFsdWU6
IHRydWUsCisgICAgICAgICAgICAgICAgfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclBy
b3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIs
IHBhcmFtczogeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZl
bnQucGFyYW1zLnJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgc3RhZ2U6ICJyZXF1ZXN0
IiwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIFBy
b3RvY29sVGVzdC5sb2coIlJlc3BvbnNlIGRhdGE6ICciICsgZmV0Y2hSZXN1bHQucmVzdWx0LnZh
bHVlLnRleHQudHJpbSgpICsgIiciKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlv
bjogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFdpdGhSZXF1ZXN0IiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJUZXN0IGZ1bGZpbGwgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHJlc3BvbnNl
LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5k
IGludGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRl
cmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBw
YXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIiwK
KyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wu
YXdhaXRFdmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KSwKKyAgICAg
ICAgICAgIF0pOworCisgICAgICAgICAgICAvLyBGdWxmaWxsIHRoZSByZXF1ZXN0IHdpdGggZGF0
YS4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAi
UnVudGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcHJv
bWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9iamVjdElkLAorICAgICAg
ICAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLAorICAgICAgICAgICAgICAgIH19KSwK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDog
Ik5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdElkOiBpbnRlcmNlcHRlZEV2ZW50LnBhcmFtcy5yZXF1ZXN0SWQsCisgICAg
ICAgICAgICAgICAgICAgIHVybDogdXJsLnJlcGxhY2UoJ2RhdGEuanNvbicsICdkYXRhLWludGVy
Y2VwdGVkLmpzb24nKSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAg
ICAgICAgICAgIFByb3RvY29sVGVzdC5sb2coInRleHQ6ICIgKyBmZXRjaFJlc3VsdC5yZXN1bHQu
dmFsdWUudGV4dCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb246IHJlcXVlc3RJ
bnRlcmNlcHRlZC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0IGZ1bGZpbGwgaW50ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHJlc3BvbnNlLiIs
CisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBGZXRjaCBVUkwgYW5kIGlu
dGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRQcm9taXNlLCBpbnRlcmNl
cHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1bnRpbWUuZXZhbHVhdGUiLCBwYXJh
bXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgpIiwKKyAg
ICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdh
aXRFdmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRlcmNlcHRlZCJ9KSwKKyAgICAgICAg
ICAgIF0pOworCisgICAgICAgICAgICAvLyBGdWxmaWxsIHRoZSByZXF1ZXN0IHdpdGggZGF0YS4K
KyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiUnVu
dGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0Lm9iamVjdElkLAorICAgICAgICAg
ICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlCisgICAgICAgICAgICAgICAgfX0pLAorICAg
ICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIiwgcGFyYW1zOiB7CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3RJZDogaW50ZXJjZXB0ZWRFdmVudC5wYXJhbXMucmVxdWVzdElkLAor
ICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAibXktaGVhZGVy
IjogIm15LXZhbHVlIiB9LAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZTogImFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbSIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGJ0b2EoImlu
dGVyY2VwdGVkIGRhdGEiKSwKKyAgICAgICAgICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogdHJ1
ZSwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgIHBy
aW50RmV0Y2hSZXN1bHQoZmV0Y2hSZXN1bHQucmVzdWx0LnZhbHVlKTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yayBy
ZXF1ZXN0IGludGVyY2VwdGlvbjogcmVxdWVzdEludGVyY2VwdGVkLmludGVyY2VwdFJlcXVlc3RX
aXRoRXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgYWJvcnQgaW50ZXJjZXB0ZWQg
cmVxdWVzdCB3aXRoIGVycm9yLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICAvLyBGZXRjaCBVUkwgYW5kIGludGVyY2VwdCBpdC4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hS
ZXN1bHRQcm9taXNlLCBpbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIlJ1
bnRpbWUuZXZhbHVhdGUiLCBwYXJhbXM6IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lv
bjogImZldGNoRGF0YSgpIiwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlcXVlc3RJbnRl
cmNlcHRlZCJ9KSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAvLyBBYm9ydCB0aGUg
cmVxdWVzdCBhcyBjYW5jZWxlZC4KKyAgICAgICAgICAgIGxldCBbZmV0Y2hSZXN1bHRdID0gYXdh
aXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0
Q29tbWFuZCh7bWV0aG9kOiAiUnVudGltZS5hd2FpdFByb21pc2UiLCBwYXJhbXM6IHsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZU9iamVjdElkOiBmZXRjaFJlc3VsdFByb21pc2UucmVzdWx0
Lm9iamVjdElkLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLAorICAg
ICAgICAgICAgICAgIH19KSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2Fp
dENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIsIHBh
cmFtczogeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IGludGVyY2VwdGVkRXZlbnQu
cGFyYW1zLnJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlOiAiQ2FuY2Vs
bGF0aW9uIiwKKyAgICAgICAgICAgICAgICB9fSksCisgICAgICAgICAgICBdKTsKKyAgICAgICAg
ICAgIFByb3RvY29sVGVzdC5sb2coIlJlcXVlc3QgZXJyb3I6ICciICsgZmV0Y2hSZXN1bHQucmVz
dWx0LnZhbHVlICsgIiciKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24uPC9wPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwt
cmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNl
Lmh0bWwKaW5kZXggNDQ4MDY0MjAwNDQ3Njk3ZmIwN2Y0MTZlOTc4NjM5OGUwMDNkMjQ2MC4uZDY2
ZTE0MGViNzE3ODY0N2MzODg2MjliMGQxM2UxYWEwMWEwMzBjOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUt
cmVzcG9uc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1y
ZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sCkBAIC00Niw3ICs0Niw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgLy8gTGV0IHRoZSBsb2FkIGNvbnRpbnVlLgog
ICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWwogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clByb3RvY29sLmF3YWl0RXZlbnQoe2V2ZW50OiAiTmV0d29yay5yZXNwb25zZVJlY2VpdmVkIn0p
LAotICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9k
OiAiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIsIHBhcmFtczoge3JlcXVlc3RJZDogbWVzc2Fn
ZU9iamVjdC5wYXJhbXMucmVxdWVzdElkfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclBy
b3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIs
IHBhcmFtczoge3JlcXVlc3RJZDogbWVzc2FnZU9iamVjdC5wYXJhbXMucmVxdWVzdElkLCBzdGFn
ZTogInJlc3BvbnNlIn19KSwKICAgICAgICAgICAgIF0pOwogICAgICAgICAgICAgUHJvdG9jb2xU
ZXN0LnBhc3MoIlJlc3BvbnNlIHJlY2VpdmVkLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNv
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNjRlMmIwZDk5NjdjZWIxZWQ3ZTMyY2QxOTI5MzVkZjE3NjU4MTI2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2RhdGEtaW50ZXJjZXB0ZWQuanNvbgpAQCAtMCwwICsxIEBACitpbnRlcmNlcHRlZCByZXF1ZXN0
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401237</attachid>
            <date>2020-06-05 22:37:02 -0700</date>
            <delta_ts>2020-06-05 23:15:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200605223701.patch</filename>
            <type>text/plain</type>
            <size>106537</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YjBmYTIwZmE0MWJiOWQ3YzU2ODhlOWUzODk5YzZjYTA3MTFkZWQ1Li5jNTY1N2Y3MmM4YmNiNGY1
MTIwYTM3MTY2ZTk3ZjJkODljNDcwZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0wMyAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cCBuZWVkcyB0byAjaW5jbHVkZSBPcGVyYW5kc0lubGluZXMuaC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNmU0
MzdjODg3ODE1ZWVjNjg5YmIyNDQwYWMzYTcxNDE5MzZiOTM0Li43NzI2ZDkwZDAyZjZiYjYyNjBh
ZDE1MWEwZTg3OWE2ZmZlMmI4N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAt
MDYtMDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJv
ZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAg
ICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qg
bm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3Ig
ZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVl
c3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29u
dGludWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1t
YWluLXJlc291cmNlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNl
LXdpdGgtZXJyb3IuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3Qtc3VicmVzb3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLmh0bWwKKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVl
c3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1
ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNldEludGVy
Y2VwdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjphZGRJbnRlcmNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpyZW1vdmVJbnRlcmNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvcik6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q6OlBlbmRpbmdJbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6UGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3Q6OmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OlBlbmRpbmdJbnRlcmNlcHRSZXF1
ZXN0Ojpjb250aW51ZVdpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6SW50ZXJjZXB0OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6CisKIDIwMjAtMDYtMDMgIFJvYiBCdWlzICA8
cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBEaXNhbGxvdyByZXNwb25zZXMgd2hlbiBhIHJl
c3BvbnNlIGNvbnRhaW5zIGludmFsaWQgaGVhZGVyIHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKaW5kZXggNzNkNWY4ODk0YWIxYjczMTJhYjViY2U4OGI3ZTcyMGJiNjQwZGE4Ny4uMjNjYWFl
NTJmNTNiMmMwNzQ2OTFkYmQzZmU1MjNmZGFkNWZhODkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDYtMDMgIFBhdmVsICA8cGF2ZWwuZmVsZG1hbkBn
bWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVlc3QgaW50
ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb24gdG8g
dGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3JrLmlu
dGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBiZSBjb250
aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2FuIG5vdyBo
YXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVycmlkZSk6Cisg
ICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxSZXNvdXJjZU92
ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0SW50
ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlc3BvbnNl
SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLl9oYW5k
bGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtPYnNl
cnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKwogMjAyMC0wNi0wMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogR3Jh
cGhpY3M6IHNob3VsZCB1c2UgdGhlIGBpZGAgKG5hbWUpIG9mIHRoZSBhbmltYXRpb24gaWYgaXQg
ZXhpc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGY1YTg4MDU0M2RhYjFkMTkzODU0ODBiMjA0NTJhOTFmOGQzYTVi
YzIuLmI2NzY0MGRkMTk5NzUxY2I3YzE0YmJmZDczOGIzNzk1NDZiNDRjNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjAtMDYtMDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFu
QGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBp
bnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0
byB0aGUgTmV0d29yayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsu
aW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNv
bnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93
IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIwLTA2LTAzICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEhpZGUgdGhl
IFBpUCBidXR0b24gaW4gZnVsbHNjcmVlbiBtb2RlIGlmIFBpUCBpcyBkaXNhYmxlZCBpbiBwcmVm
ZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9OZXR3b3JrLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL05ldHdvcmsuanNvbgppbmRleCBmMjQyNWRkNmFmYzBlZmJmMWQxMTUyMjBmZDQyNDZhZmUy
ZmI5MmUxLi41M2VkNTZlOTYxMDNiNDMzNGFjYTQ1MmRjZDY0YTYwODI0Y2VjYjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNv
bgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsu
anNvbgpAQCAtMTU1LDcgKzE1NSwxMyBAQAogICAgICAgICAgICAgImlkIjogIk5ldHdvcmtTdGFn
ZSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKLSAgICAgICAg
ICAgICJlbnVtIjogWyJyZXNwb25zZSJdCisgICAgICAgICAgICAiZW51bSI6IFsicmVxdWVzdCIs
ICJyZXNwb25zZSJdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJS
ZXNvdXJjZUVycm9yVHlwZSIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVl
c3QuIiwKKyAgICAgICAgICAgICJlbnVtIjogWyJHZW5lcmFsIiwgIkFjY2Vzc0NvbnRyb2wiLCAi
Q2FuY2VsbGF0aW9uIiwgIlRpbWVvdXQiXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFu
ZHMiOiBbCkBAIC0yNDQsMTAgKzI1MCwxMCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkFkZCBhbiBpbnRlcmNlcHRpb24uIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBlcyI6IFsicGFn
ZSJdLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVVJMIHBhdHRlcm4gdG8g
aW50ZXJjZXB0LCBpbnRlcmNlcHQgZXZlcnl0aGluZyBpZiBub3Qgc3BlY2lmaWVkIG9yIGVtcHR5
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3Jr
U3RhZ2UiLCAiZGVzY3JpcHRpb24iOiAiU3RhZ2UgdG8gaW50ZXJjZXB0LiIgfSwKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImNhc2VTZW5zaXRpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBj
YXNpbmcgb2YgYHVybGAgcGFyYW1ldGVyLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJl
c3Npb24uIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJO
ZXR3b3JrU3RhZ2UiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHBy
ZXNlbnQgdGhpcyBhcHBsaWVzIHRvIGFsbCBuZXR3b3JrIHN0YWdlcy4iIH0KKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMg
YSByZWd1bGFyIGV4cHJlc3Npb24uIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAg
ICAgIHsKQEAgLTI1NiwxNyArMjYyLDI5IEBACiAgICAgICAgICAgICAidGFyZ2V0VHlwZXMiOiBb
InBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAiZGVzY3JpcHRpb24iOiAiU3Rh
Z2UgdG8gaW50ZXJjZXB0LiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhc2VTZW5z
aXRpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBjYXNpbmcgb2YgYHVybGAgcGFyYW1ldGVyLiIg
fSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFu
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJs
YCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIiB9LAotICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHByZXNlbnQgdGhpcyBhcHBsaWVzIHRvIGFsbCBu
ZXR3b3JrIHN0YWdlcy4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAi
dHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRy
dWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjog
ImludGVyY2VwdENvbnRpbnVlIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb250aW51
ZSBhbiBpbnRlcmNlcHRpb24gd2l0aCBubyBtb2RpZmljYXRpb25zLiIsCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ29udGludWUgcmVxdWVzdCBvciByZXNwb25zZSB3aXRob3V0IG1vZGlm
aWNhdGlvbnMuIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBlcyI6IFsicGFnZSJdLAogICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0
SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3Ig
dGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51ZS4i
IH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVl
c3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0
d29yayByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9u
IjogIlN0YWdlIHRvIGNvbnRpbnVlLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRXaXRoUmVxdWVzdCIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVwbGFjZSBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGgg
dGhlIHByb3ZpZGVkIG9uZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVz
Y3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVz
dCBvciByZXNwb25zZSB0byBjb250aW51ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCJkZXNjcmlwdGlv
biI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InVybCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsImRlc2NyaXB0aW9uIjog
IkhUVFAgcmVxdWVzdCB1cmwuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVy
cyIsICIkcmVmIjogIkhlYWRlcnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
SFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVu
bW9kaWZpZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG9zdERhdGEiLCAidHlw
ZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCBQT1NU
IHJlcXVlc3QgZGF0YSwgYmFzZTY0LWVuY29kZWQuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAg
IH0sCiAgICAgICAgIHsKQEAgLTI4Miw2ICszMDAsMjcgQEAKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInN0YXR1c1RleHQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgdGV4dC4gUGFzcyB0aHJvdWdoIG9y
aWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZh
bHVlcyBpZiB1bm1vZGlmaWVkLiIgfQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm92aWRlIHJlc3BvbnNlIGZvciBhbiBpbnRl
cmNlcHRlZCByZXF1ZXN0LiBSZXF1ZXN0IGNvbXBsZXRlbHkgYnlwYXNzZXMgdGhlIG5ldHdvcmsg
aW4gdGhpcyBjYXNlIGFuZCBpcyBpbW1lZGlhdGVseSBmdWxmaWxsZWQgd2l0aCB0aGUgcHJvdmlk
ZWQgZGF0YS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24i
OiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVzcG9uc2UgdG8gbW9k
aWZ5LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJz
dHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJiYXNlNjRFbmNvZGVkIiwgInR5
cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUcnVlLCBpZiBjb250ZW50IHdhcyBzZW50
IGFzIGJhc2U2NC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtaW1lVHlwZSIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJNSU1FIFR5cGUgZm9yIHRoZSBkYXRhLiIg
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1cyIsICJ0eXBlIjogImludGVnZXIi
LCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZS4iIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2Ny
aXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVzIHRleHQuIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMiLCAiZGVzY3JpcHRpb24iOiAi
SFRUUCByZXNwb25zZSBoZWFkZXJzLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGYWlsIHJlcXVlc3Qgd2l0aCBnaXZlbiBlcnJv
ciB0eXBlLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6
ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXF1ZXN0IHRvIGZhaWwu
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JUeXBlIiwgIiRyZWYiOiAiUmVz
b3VyY2VFcnJvclR5cGUiLCAiZGVzY3JpcHRpb24iOiAiRGVsaXZlciBlcnJvciByZWFzb24gZm9y
IHRoZSByZXF1ZXN0IGZhaWx1cmUuIiB9CisgICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICBd
LAogICAgICJldmVudHMiOiBbCkBAIC0zNTcsOSArMzk2LDE3IEBACiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJyZXNvdXJjZSIsICIkcmVmIjogIkNhY2hlZFJlc291cmNlIiwgImRlc2NyaXB0
aW9uIjogIkNhY2hlZCByZXNvdXJjZSBkYXRhLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0SW50ZXJjZXB0ZWQiLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXF1ZXN0IGhhcyBi
ZWVuIGludGVyY2VwdGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25kIHdpdGggPGNvZGU+TmV0
d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4sIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3Q8L2NvZGU+YCBvciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZTwv
Y29kZT5gIHRvIHJlc29sdmUgdGhpcyByZXF1ZXN0LiIsCisgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJl
cXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVk
IG5ldHdvcmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVl
c3RXaWxsQmVTZW50PC9jb2RlPi4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0IiwgIiRyZWYiOiAiUmVxdWVzdCIsICJkZXNjcmlwdGlvbiI6ICJPcmlnaW5hbCByZXF1ZXN0
IGNvbnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMgY29udGludWVkLiIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJy
ZXNwb25zZUludGVyY2VwdGVkIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3
aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0
IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4gb3Ig
PGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uczwvY29kZT5gIHRvIGNvbnRpbnVlIHRo
aXMgcmVzcG9uc2UuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhU
VFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0IHJlc3Bv
bnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4gb3IgPGNvZGU+
TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJl
c3BvbnNlLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwKICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElk
IiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRo
aXMgaW50ZXJjZXB0ZWQgbmV0d29yay4gQ29ycmVzcG9uZHMgd2l0aCBhbiBlYXJsaWVyIDxjb2Rl
Pk5ldHdvcmsucmVxdWVzdFdpbGxCZVNlbnQ8L2NvZGU+LiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYjBk
NzY2NGEwYTBiNjA0OTI0MDllZDU5YWEzMDkyMzY3ZjZkZGE2OC4uMGYwZjJhMTM2ZWNjM2RkNTQ2
ODkzZGNhYzk1MDMyOWQ2MjFiNmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTgxMiwxMCArODEyLDE3IEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
SW1wbChDYWNoZWRSZXNvdXJjZSYgY2FjCiAgICAgfQogfQogCi1ib29sIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jv
b2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCi0gICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQt
PndpbGxJbnRlcmNlcHRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm4gbmV0d29ya0Fn
ZW50LT53aWxsSW50ZXJjZXB0KHJlcXVlc3QpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgcmV0dXJuIG5ldHdv
cmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTgyNiw2ICs4MzMsMTIgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAg
bmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7
Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYzdiNjZiYTEx
NTVkOTFiM2M1ZTBlMzEyZTE0YmQyZmU3MzI4NmQyNS4uZGY5MzkwNWI0NWJhZTRjNzRhNzFkMWVh
ZTg5YzEyNWUwMTgzYTIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkhp
dFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWMu
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNs
dWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUg
Ildvcmtlckluc3BlY3RvclByb3h5LmgiCkBAIC0yMzQsOCArMjM1LDEwIEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZy
YW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgd2lsbEludGVy
Y2VwdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRv
Q29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KTsKQEAgLTQ0Miw4ICs0NDUsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyB2b2lk
IHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJik7CiAKLSAgICBz
dGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC0xMjU3LDExICsxMjYyLDE5IEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYKICAgICB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1w
bChjYWNoZWRSZXNvdXJjZSk7CiB9CiAKLWlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxJbnRlcmNlcHQoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsK
ICAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOworICAgICAgICByZXR1cm4gd2lsbEludGVy
Y2VwdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQoreworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWM6Omhh
c0Zyb250ZW5kcygpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiBzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC0xMjczLDYgKzEyODYsMTMgQEAgaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYg
ZnJhbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7
CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVx
dWVzdCgqbG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpZiAoYXV0byog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShsb2FkZXIu
ZnJhbWUoKSkpCisgICAgICAgIGludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDk1NGFhZjEyMWE5ZmE1MDdkODNiYzEwYWUzN2RlMWYx
MjhmN2RjZmMuLmUzOGVmMzk4ZTdlOWFmYzFlMDFhNTRiOWNlNjhmYzIzNTk4ZTkxNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuY3BwCkBAIC0zMCwxMSArMzAsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJj
ZXB0UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNo
b3VsZEludGVyY2VwdFJlcXVlc3QoZnJhbWUsIHJlcXVlc3QpOworfQorCiBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChj
b25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewog
ICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3Bv
bnNlKGZyYW1lLCByZXNwb25zZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVy
KQoreworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2Fk
ZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBiNjdlODliODBiNGU3YTg1ODZjYWM4
MWFkZTVkNThhMWJjYjBkNDMxLi5hMzJmODc3ZWFhMDRmMjdkMTIxMjcwY2ZmNWFjYzNiMDMyYzFj
NmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwxNCArMzYsMjcgQEAgY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQgewogcHVibGljOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAgICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwog
CiBwcml2YXRlOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5h
bChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEludGVybmFs
KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZy
YW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFsKCpmcmFt
ZSwgcmVxdWVzdCk7Cit9CisKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoZmFsc2UpOwpAQCAtNTMsNiArNjYsMTIgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSoK
ICAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3Bv
bnNlKTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Ojpp
bnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGxv
YWRlci5mcmFtZSgpLCBsb2FkZXIucmVxdWVzdCgpKSk7CisgICAgaW50ZXJjZXB0UmVxdWVzdElu
dGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUq
IGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBhZmNkZDJhN2ZhZmZlMGJlYzk4MjA3
MmQ4OTRiYzg1YzZlMzBjNDRjLi43NjE0MWUxYjlmMmI3YjRiMjdmOTQ3MmY4YTEyNjJhNTNkM2My
ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAu
aCIKQEAgLTg0MSwxMiArODQyLDEzIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNh
YmxlKEVycm9yU3RyaW5nJikKICAgICBtX3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAgICAgbV9l
eHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFyKCk7CiAKKyAgICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0
cygpOwogICAgIGNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpOwogCiAgICAgc2V0UmVzb3VyY2VD
YWNoaW5nRGlzYWJsZWQoZmFsc2UpOwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwpCitib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hv
dWxkSW50ZXJjZXB0KFVSTCB1cmwsIE5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UpCiB7CiAgICAg
dXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC04NTUsNiArODU3LDEwIEBAIGJv
b2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBpbnRlcmNlcHQgOiBtX2ludGVyY2Vw
dHMpIHsKKyAgICAgICAgaWYgKGludGVyY2VwdC5uZXR3b3JrU3RhZ2UgIT0gbmV0d29ya1N0YWdl
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChpbnRlcmNlcHQudXJsLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBhdXRvIHNlYXJjaFN0cmlu
Z1R5cGUgPSBpbnRlcmNlcHQuaXNSZWdleCA/IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OlNlYXJj
aFN0cmluZ1R5cGU6OlJlZ2V4IDogQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5n
VHlwZTo6RXhhY3RTdHJpbmc7CiAgICAgICAgIGF1dG8gcmVnZXggPSBDb250ZW50U2VhcmNoVXRp
bGl0aWVzOjpjcmVhdGVSZWd1bGFyRXhwcmVzc2lvbkZvclNlYXJjaFN0cmluZyhpbnRlcmNlcHQu
dXJsLCBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSwgc2VhcmNoU3RyaW5nVHlwZSk7CiAgICAgICAg
IGlmIChyZWdleC5tYXRjaCh1cmxTdHJpbmcpICE9IC0xKQpAQCAtODY0LDYgKzg3MCwxMyBAQCBi
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y29udGludWVQ
ZW5kaW5nUmVxdWVzdHMoKQoreworICAgIGZvciAoYXV0byYgcGVuZGluZ1JlcXVlc3QgOiBtX3Bl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy52YWx1ZXMoKSkKKyAgICAgICAgcGVuZGluZ1JlcXVlc3Qt
PmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCgpOworICAgIG1fcGVuZGluZ0ludGVyY2VwdFJl
cXVlc3RzLmNsZWFyKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51
ZVBlbmRpbmdSZXNwb25zZXMoKQogewogICAgIGZvciAoYXV0byYgcGVuZGluZ0ludGVyY2VwdFJl
c3BvbnNlIDogbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnZhbHVlcygpKQpAQCAtMTAyOSwx
OCArMTA0MiwxOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2V0SW50ZXJjZXB0aW9u
RW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvbwogCiAgICAgbV9pbnRlcmNlcHRp
b25FbmFibGVkID0gZW5hYmxlZDsKIAotICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQor
ICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKSB7CisgICAgICAgIGNvbnRpbnVlUGVuZGlu
Z1JlcXVlc3RzKCk7CiAgICAgICAgIGNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpOworICAgIH0K
IH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRpb25h
bENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5n
KiBuZXR3b3JrU3RhZ2VTdHJpbmcpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YWRkSW50
ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VT
ZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKIHsKLSAgICBpZiAobmV0d29y
a1N0YWdlU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm5ldHdvcmtTdGFnZVN0cmlu
Zyk7Ci0gICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmlu
ZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpuZXR3b3JrU3RhZ2VT
dHJpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byBuZXR3b3Jr
U3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdl
PihuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAg
IGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0
d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVyY2Vw
dCBpbnRlcmNlcHQ7CkBAIC0xMDQ5LDIxICsxMDYyLDE4IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpCiAgICAgICAgIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2FzZVNlbnNp
dGl2ZTsKICAgICBpZiAob3B0aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQuaXNSZWdl
eCA9ICpvcHRpb25hbElzUmVnZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmNlcHRp
bmcgcmVxdWVzdHMuCisgICAgaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9IG5ldHdvcmtTdGFnZS52
YWx1ZSgpOwogCiAgICAgaWYgKCFtX2ludGVyY2VwdHMuYXBwZW5kSWZOb3RDb250YWlucyhpbnRl
cmNlcHQpKQotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcmNlcHQgZm9yIGdpdmVuIHVybCBh
bmQgZ2l2ZW4gaXNSZWdleCBhbHJlYWR5IGV4aXN0cyJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSAiSW50ZXJjZXB0IGZvciBnaXZlbiB1cmwsIGdpdmVuIGlzUmVnZXggYW5kIGdpdmVuIHN0YWdl
IGFscmVhZHkgZXhpc3RzIl9zOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVt
b3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9u
YWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpyZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJ
c1JlZ2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBu
ZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29y
a1N0YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2Up
IHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3Jr
U3RhZ2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Oklu
c3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYg
KCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtu
b3duIG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNzIsMTkgKzEwODIs
MjcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFMKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5z
aXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgp
CiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8v
IEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRlcmNlcHQubmV0
d29ya1N0YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJjZXB0
cy5yZW1vdmVBbGwoaW50ZXJjZXB0KSkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBp
bnRlcmNlcHQgZm9yIGdpdmVuIHVybCBhbmQgZ2l2ZW4gaXNSZWdleCJfczsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSAiTWlzc2luZyBpbnRlcmNlcHQgZm9yIGdpdmVuIHVybCwgZ2l2ZW4gaXNSZWdl
eCBhbmQgZ2l2ZW4gc3RhZ2UgYWxyZWFkeSBleGlzdHMiX3M7Cit9CisKK2Jvb2wgSW5zcGVjdG9y
TmV0d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3Jr
U3RhZ2U6OlJlcXVlc3QpCisgICAgICAgIHx8IHNob3VsZEludGVyY2VwdChyZXF1ZXN0LnVybCgp
LCBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5h
YmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2Vw
dChyZXF1ZXN0LnVybCgpKTsKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJs
KCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKQEAgLTEwOTIsNyArMTExMCwyMSBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAg
IGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpKTsKKyAgICByZXR1cm4gc2hv
dWxkSW50ZXJjZXB0KHJlc3BvbnNlLnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKT4mJiBoYW5kbGVyKQoreworICAgIEFTU0VSVChtX2VuYWJsZWQpOworICAgIEFTU0VSVCht
X2ludGVyY2VwdGlvbkVuYWJsZWQpOworCisgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZp
ZXJzRmFjdG9yeTo6cmVxdWVzdElkKGxvYWRlci5pZGVudGlmaWVyKCkpOworICAgIGlmIChtX3Bl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5jb250YWlucyhyZXF1ZXN0SWQpKSB7CisgICAgICAgIGhh
bmRsZXIobG9hZGVyLnJlcXVlc3QoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9w
ZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuc2V0KHJlcXVlc3RJZCwgbWFrZVVuaXF1ZTxQZW5kaW5n
SW50ZXJjZXB0UmVxdWVzdD4oJmxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSkpOworICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVj
dEZvclJlc291cmNlUmVxdWVzdChsb2FkZXIucmVxdWVzdCgpKSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFu
ZGxlcikKQEAgLTExMTIsMTUgKzExNDQsNjkgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLAogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNwb25zZUludGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlLCBudWxscHRyKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQordm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nKQog
ewotICAgIGF1dG8gcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0
UmVzcG9uc2VzLnRha2UocmVxdWVzdElkKTsKLSAgICBpZiAoIXBlbmRpbmdJbnRlcmNlcHRSZXNw
b25zZSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0
IHJlc3BvbnNlIGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgYXV0byBuZXR3b3JrU3RhZ2Ug
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZy
b21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3
b3JrU3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9y
U3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0
YWdlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobmV0d29y
a1N0YWdlLnZhbHVlKCkpIHsKKyAgICBjYXNlIE5ldHdvcmtTdGFnZTo6UmVxdWVzdDoKKyAgICAg
ICAgeworICAgICAgICAgICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCA9IG1fcGVuZGlu
Z0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsKKyAgICAgICAgICAgIGlmIChwZW5k
aW5nSW50ZXJjZXB0UmVxdWVzdCkKKyAgICAgICAgICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVx
dWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxSZXF1ZXN0KCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCBy
ZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICBjYXNlIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2U6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGF1dG8gcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0
UmVzcG9uc2VzLnRha2UocmVxdWVzdElkKTsKKyAgICAgICAgICAgIGlmIChwZW5kaW5nSW50ZXJj
ZXB0UmVzcG9uc2UpCisgICAgICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5y
ZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNl
IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVxdWVzdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG1ldGhvZCwgY29uc3QgU3Ry
aW5nKiB1cmwsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBwb3N0
RGF0YSkKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVx
dWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlmIChwZW5kaW5nUmVxdWVzdCkgeworICAgICAg
ICBSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgp
OworICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOwor
ICAgICAgICBpZiAodXJsKQorICAgICAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgKnVy
bCkpOworICAgICAgICBpZiAobWV0aG9kKQorICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCptZXRob2QpOworICAgICAgICBpZiAoaGVhZGVycykgeworICAgICAgICAgICAgSFRUUEhl
YWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAgICAgICAgICBmb3IgKGF1dG8mIFtrZXksIHZh
bHVlXSA6ICpoZWFkZXJzKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOwor
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAg
ICAgICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRkKGtleSwgaGVhZGVyVmFsdWUpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1v
dmUoZXhwbGljaXRIZWFkZXJzKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBvc3REYXRhKSB7
CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICAgICAgaWYgKCFi
YXNlNjREZWNvZGUoKnBvc3REYXRhLCBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBwb3N0RGF0YSJfczsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBC
b2R5KEZvcm1EYXRhOjpjcmVhdGUoYnVmZmVyKSk7CisgICAgICAgIH0KKyAgICAgICAgcGVuZGlu
Z1JlcXVlc3QtPmNvbnRpbnVlV2l0aFJlcXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2lu
YWxSZXNwb25zZSgpOworICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNl
cHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwogfQogCiB2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBi
YXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcqIG1pbWVUeXBlLCBjb25zdCBpbnQqIHN0YXR1cywg
Y29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMpCkBA
IC0xMTY2LDYgKzEyNTIsOTEgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2Vw
dFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICBwZW5kaW5n
SW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmQob3ZlcnJpZGVSZXNwb25zZSwgb3ZlcnJpZGVEYXRh
KTsKIH0KIAordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRo
UmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCwgY29uc3Qg
SlNPTjo6T2JqZWN0JiBoZWFkZXJzKQoreworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3Bl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7CisgICAgaWYgKCFwZW5kaW5n
UmVxdWVzdCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJj
ZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gcGVuZGluZ1JlcXVlc3Qt
Pm1fbG9hZGVyLmdldCgpOworICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVh
ZHkgYmVlbiBwcm9jZXNzZWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBpZiAoYmFzZTY0RW5jb2RlZCkgeworICAgICAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICBpZiAoIWJhc2U2NERlY29kZShjb250ZW50
LCBidWZmZXIpKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZGVjb2Rl
IGdpdmVuIGNvbnRlbnQiX3M7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LnV0ZjgoKS5k
YXRhKCksIGNvbnRlbnQudXRmOCgpLmxlbmd0aCgpKTsKKworICAgIC8vIE1pbWljIGRhdGEgVVJM
IGxvYWQgYmVoYXZpb3IgLSByZXBvcnQgZGlkUmVjZWl2ZVJlc3BvbnNlICYgZGlkRmluaXNoTG9h
ZGluZy4KKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHBlbmRpbmdSZXF1ZXN0LT5tX2xv
YWRlci0+dXJsKCksIG1pbWVUeXBlLCBkYXRhLT5zaXplKCksIFN0cmluZygpKTsKKyAgICByZXNw
b25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpJbnNwZWN0b3JPdmVycmlk
ZSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsKKyAgICByZXNwb25z
ZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNUZXh0KTsKKyAgICBIVFRQSGVhZGVyTWFwIGV4cGxp
Y2l0SGVhZGVyczsKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpIHsKKyAgICAgICAg
U3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICBpZiAoaGVhZGVyLnZhbHVlLT5hc1N0cmluZyho
ZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRkKGhlYWRlci5rZXks
IGhlYWRlclZhbHVlKTsKKyAgICB9CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhX
VEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOworICAg
IGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBk
YXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChidWZmZXItPnNp
emUoKSkKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZl
ciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICBs
b2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgIH0pOwor
fQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJv
cihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIGVycm9yVHlwZVN0cmluZykKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0g
bV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlmICghcGVu
ZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGlu
dGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1f
bG9hZGVyLmdldCgpOworICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKKyAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGFib3J0IHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJl
ZW4gcHJvY2Vzc2VkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBlcnJv
clR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJv
clR5cGU+KGVycm9yVHlwZVN0cmluZyk7CisgICAgaWYgKCFlcnJvclR5cGUpIHsKKyAgICAgICAg
ZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGVycm9yVHlwZTogIl9zLCBlcnJvclR5
cGVTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKKyAgICBzd2l0Y2ggKGVycm9yVHlwZS52YWx1ZSgpKSB7CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6R2VuZXJhbDoKKyAgICAg
ICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxv
YWRlci0+dXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNzQ29udHJvbDoKKyAgICAgICAgZXJy
b3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci0+
dXJsKCksICJBY2Nlc3MgZGVuaWVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250
cm9sKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6Q2FuY2VsbGF0aW9uOgorICAgICAgICBlcnJvciA9IFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51cmwoKSwg
IlJlcXVlc3QgY2FuY2VsZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6
UmVzb3VyY2VFcnJvclR5cGU6OlRpbWVvdXQ6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAiUmVxdWVzdCB0
aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBsb2FkZXItPmRpZEZhaWwoZXJyb3IpOworfQorCiBib29sIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKIHsKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
aW1lVHlwZSwgInRleHQvIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGJmZDEzMWU5YjU4NTZjODRkYTc3
MjQ4MDVlNzEzOTdiN2M3NDg2YTkuLmI0MjU5YjY5OTUwMWUwMGViNWUzNGFiZGFlM2UzZjk4Y2Uw
OTJmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtODgsMTAgKzg4LDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIGdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBTdHJpbmcqIHNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZSkgZmluYWw7CiAgICAgdm9p
ZCByZXNvbHZlV2ViU29ja2V0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+JikgZmluYWw7CiAgICAgdm9pZCBzZXRJbnRlcmNlcHRpb25F
bmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSBmaW5hbDsKLSAgICB2b2lkIGFkZElu
dGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBj
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtT
dGFnZVN0cmluZykgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogaXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwot
ICAgIHZvaWQgaW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCkgZmluYWw7CisgICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0
IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgpIGZpbmFsOworICAgIHZv
aWQgcmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBpc1JlZ2V4KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdENvbnRpbnVl
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbmV0
d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXF1ZXN0KEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogbWV0aG9k
LCBjb25zdCBTdHJpbmcqIHVybCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBT
dHJpbmcqIHBvc3REYXRhKSBmaW5hbDsKICAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25zZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50
KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBo
ZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGludCBzdGF0dXMs
IGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0JiBoZWFkZXJzKSBm
aW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpIGZpbmFsOwog
CiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCB3aWxsUmVjYWxjdWxh
dGVTdHlsZSgpOwpAQCAtMTE4LDkgKzEyMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWluRnJh
bWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXImKTsKICAgICB2b2lkIHNldEluaXRpYWxTY3JpcHRD
b250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJp
bmcpOwogICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsK
LSAgICBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwor
ICAgIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29s
IHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQgaW50ZXJjZXB0UmVx
dWVzdChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwogICAgIHZvaWQgc2VhcmNoSW5S
ZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4m
KTsKQEAgLTE0MCw3ICsxNDUsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEluc3BlY3Rv
clBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVS
TCk7CisgICAgdXNpbmcgTmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlOworICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCwgTmV0d29ya1N0
YWdlKTsKKyAgICB2b2lkIGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBjb250
aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsKIAogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVx
dWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKQEAgLTE1Myw2ICsxNjAsMzEgQEAgcHJp
dmF0ZToKIAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAorICAgIGNsYXNzIFBlbmRpbmdJbnRl
cmNlcHRSZXF1ZXN0IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVy
Y2VwdFJlcXVlc3QpOworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJs
aWM6CisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KFJlZlB0cjxSZXNvdXJjZUxvYWRl
cj4gbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgOiBtX2xvYWRlcihsb2FkZXIpCisg
ICAgICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpCisgICAgICAgIHsgfQorCisgICAgICAgIHZvaWQgY29udGludWVXaXRoT3JpZ2luYWxSZXF1
ZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2xvYWRlci0+cmVhY2hlZFRlcm1p
bmFsU3RhdGUoKSkKKyAgICAgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKG1fbG9hZGVy
LT5yZXF1ZXN0KCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb250aW51ZVdpdGhSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9jb21wbGV0aW9uSGFuZGxlcihyZXF1ZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIFBl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0KCkgPSBkZWZhdWx0OworICAgICAgICBSZWZQdHI8UmVzb3Vy
Y2VMb2FkZXI+IG1fbG9hZGVyOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIH07CisKICAgICBj
bGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTIwNCwxNSArMjM2LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyB1
cmw7CiAgICAgICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSB7IHRydWUgfTsKICAgICAgICAgYm9vbCBp
c1JlZ2V4IHsgZmFsc2UgfTsKKyAgICAgICAgTmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSB7IE5l
dHdvcmtTdGFnZTo6UmVzcG9uc2UgfTsKIAogICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEludGVyY2VwdCYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiB1cmwgPT0gb3RoZXIudXJsCiAgICAgICAgICAgICAgICAgJiYgY2FzZVNlbnNpdGl2ZSA9
PSBvdGhlci5jYXNlU2Vuc2l0aXZlCi0gICAgICAgICAgICAgICAgJiYgaXNSZWdleCA9PSBvdGhl
ci5pc1JlZ2V4OworICAgICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdleAor
ICAgICAgICAgICAgICAgICYmIG5ldHdvcmtTdGFnZSA9PSBvdGhlci5uZXR3b3JrU3RhZ2U7CiAg
ICAgICAgIH0KICAgICB9OwogICAgIFZlY3RvcjxJbnRlcmNlcHQ+IG1faW50ZXJjZXB0czsKKyAg
ICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0
Pj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6
dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2U+PiBtX3BlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZXM7CiAKICAgICAvLyBGSVhNRTogSW5zcGVjdG9yTmV0d29ya0FnZW50IHNob3VsZCBu
b3QgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDIzMWVkZWM4
Y2NjNzFkNjUyMTcxMDYzNjNmNWNjMzQ5OTBhMTY0N2UuLjY1OWUyZmU4OTA3YjMxNTk3NjYwYTdk
ZGM0OGI5NDVkMzNmMGY1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtODQ2LDcgKzg0Niw3IEBAIFJlc291cmNl
RXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1CiAKICAgICByZXF1ZXN0LnVwZGF0ZVJlZmVycmVyUG9saWN5KGRvY3Vt
ZW50KCkgPyBkb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpIDogUmVmZXJyZXJQb2xpY3k6Ok5v
UmVmZXJyZXJXaGVuRG93bmdyYWRlKTsKIAotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdCgmZnJh
bWUsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXF1ZXN0LnNldENhY2hp
bmdQb2xpY3koQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKTsKIAogICAgIGF1dG8mIHBh
Z2UgPSAqZnJhbWUucGFnZSgpOwpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgVmVjdG9yPFJlZjxTVkdJ
bWFnZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjphbGxDYWNoZWRTVkdJbWFnZXMoKSBjb25zdAog
CiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIGlmIChJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lKCksIHJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRl
cmNlcHQoZnJhbWUoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgIkluc3BlY3RvciBpbnRlcmNl
cHQiX3MgfSk7CiAKICAgICBpZiAocmVxdWVzdC5jaGFyc2V0KCkuaXNFbXB0eSgpICYmICh0eXBl
ID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpz
CmluZGV4IDkzNzYzNDliOWRhYmExMDIzM2JhMDFiZDc2NDhhZjA3OWFhMmEwZjUuLjI0ODk4NGIw
Zjc2MGExOGQzNDhkZmMwMmQwZGU2NTlmMmQ4NTlmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdv
cmtNYW5hZ2VyLmpzCkBAIC0xNTksOSArMTU5LDkgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFz
cyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgICAgICBp
ZiAoIWxvY2FsUmVzb3VyY2VPdmVycmlkZS5kaXNhYmxlZCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5O
ZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlk
ZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5z
cGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CkBAIC0zNjQsNyArMzY0LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3
b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxS
ZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2Nh
bFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVn
ZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdv
cmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3Bv
bnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29y
ay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIGRpZCBu
b3QgZXhpc3QuCkBAIC0zOTcsNyArMzk3LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBO
ZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9j
YWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBs
b2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlz
UmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5l
dHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJl
c3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0
d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAg
ICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9u
IGRpZCBub3QgZXhpc3QuCkBAIC05MDYsMTIgKzkwNiwyMSBAQCBXSS5OZXR3b3JrTWFuYWdlciA9
IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3Jl
c291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZGVsZXRlKHJlcXVlc3RJZGVudGlmaWVyKTsKICAg
ICB9CiAKKyAgICByZXF1ZXN0SW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3Qp
CisgICAgeworICAgICAgICAvLyBGSVhNRTogYWRkIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHN1cHBv
cnQgdG8gdGhlIGZyb250ZW5kLgorICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIHt0YXJnZXQsIHJl
cXVlc3RJZCwgcmVxdWVzdH0pOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQodGFy
Z2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbGV0IHVybCA9IFdJLnVy
bFdpdGhvdXRGcmFnbWVudChyZXNwb25zZS51cmwpOwogICAgICAgICBsZXQgbG9jYWxSZXNvdXJj
ZU92ZXJyaWRlID0gdGhpcy5sb2NhbFJlc291cmNlT3ZlcnJpZGVGb3JVUkwodXJsKTsKICAgICAg
ICAgaWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUgfHwgbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmRp
c2FibGVkKSB7Ci0gICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRp
bnVlKHJlcXVlc3RJZCk7CisgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2Vw
dENvbnRpbnVlLmludm9rZSh7CisgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAg
ICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2Uu
UmVzcG9uc2UsCisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0xMzc3LDcgKzEzODYsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdv
cmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB1cmw6IGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNl
T3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgaXNSZWdleDogbG9jYWxSZXNv
dXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3Rv
ckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAg
IHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9u
c2UsCiAgICAgICAgIH07CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBO
ZXR3b3JrLmFkZEludGVyY2VwdGlvbiAvIE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBu
b3QgZXhpc3QuCkBAIC0xNDMzLDQgKzE0NDIsNSBAQCBXSS5OZXR3b3JrTWFuYWdlci5FdmVudCA9
IHsKICAgICBCb290c3RyYXBTY3JpcHREZXN0cm95ZWQ6ICJuZXR3b3JrLW1hbmFnZXItYm9vdHN0
cmFwLXNjcmlwdC1kZXN0cm95ZWQiLAogICAgIExvY2FsUmVzb3VyY2VPdmVycmlkZUFkZGVkOiAi
bmV0d29yay1tYW5hZ2VyLWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLWFkZGVkIiwKICAgICBMb2Nh
bFJlc291cmNlT3ZlcnJpZGVSZW1vdmVkOiAibmV0d29yay1tYW5hZ2VyLWxvY2FsLXJlc291cmNl
LW92ZXJyaWRlLXJlbW92ZWQiLAorICAgIFJlcXVlc3RJbnRlcmNlcHRlZDogIm5ldHdvcmstbWFu
YWdlci1yZXF1ZXN0LWludGVyY2VwdGVkIgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5q
cwppbmRleCA1OWMyOWM5YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgwMGFhLi5mZTg4Mjlh
NzFiZmQwZWVkODU2YjQxYzNhYWVjZTZhZTdmMWExNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09i
c2VydmVyLmpzCkBAIC0xMDgsNiArMTA4LDExIEBAIFdJLk5ldHdvcmtPYnNlcnZlciA9IGNsYXNz
IE5ldHdvcmtPYnNlcnZlciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlzcGF0Y2hlcgogICAg
ICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogICAgIH0KIAorICAgIHJlcXVlc3RJbnRl
cmNlcHRlZChyZXF1ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICBXSS5uZXR3b3JrTWFu
YWdlci5yZXF1ZXN0SW50ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3Qp
OworICAgIH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQocmVxdWVzdElkLCByZXNwb25zZSkK
ICAgICB7CiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlc3BvbnNlSW50ZXJjZXB0ZWQodGhp
cy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwM2ViZDg5
NDRhYTFiOWJjYmNlZWNiZDVmZGQxNjE5YzVhY2E4ZGFjLi5jNWFmZmZkZDI4ZWY5YTcxZTA2ZTRk
NzZhNDA0Mjc5ZjNhNjZhMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a0xvYWRJbmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVz
Lmg+CkBAIC0yMzAsOCArMjMxLDE2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxl
TG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBp
ZiAoIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIsIHRyYWNr
aW5nUGFyYW1ldGVycykpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUg
TmV0d29ya1Byb2Nlc3MiKTsKLSAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNz
KHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1l
dGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1
ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKLSAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChy
ZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgfHwgIUluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVx
dWVzdChyZXNvdXJjZUxvYWRlci5mcmFtZSgpLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkpKSB7
CisgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2Fk
ZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShy
ZXNvdXJjZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9h
ZGVyLCBbdGhpcywgcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmUHRyKCZyZXNvdXJj
ZUxvYWRlciksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgcmVzb3VyY2VdKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoKnBy
b3RlY3RlZFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1l
KHJlc291cmNlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0pOwogICAgIH0KIAog
ICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9h
ZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY5YzljYWEwMzcw
ODBjYzJkNWYxY2I2ZDU0N2MxNmI1ZGRhNTVjY2EuLjcxYTFjZDUzYzJjMWIzNzIyZDAzOGRjZTI2
OTU2YmNiZjYxNDY3OTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMC0wNi0wMyAgUGF2ZWwg
IDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRy
b2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0
IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yaworICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0
IGFkZHMgTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAg
ICAgICBjYW4gYmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFn
ZSBlbnVtIGNhbiBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFs
dWVzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
YWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3QtY29udGludWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
bWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJl
c3BvbnNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2Uu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Ut
d2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25z
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNo
by5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1wYWdlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1y
ZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzOgorICAgICAgICAqIGluc3BlY3Rv
ci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWw6
CisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQu
anNvbjogQWRkZWQuCisKIDIwMjAtMDYtMDMgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4K
IAogICAgICAgICBEaXNhbGxvdyByZXNwb25zZXMgd2hlbiBhIHJlc3BvbnNlIGNvbnRhaW5zIGlu
dmFsaWQgaGVhZGVyIHZhbHVlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0
ZWQtcmVxdWVzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQwZjIwY2I2YzE0NmE3M2YyZmFj
MGMzNzQ4YmNmNmM4ZTU0ZjI1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNiBAQAorQUxFUlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAor
Q09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IEFib3J0RXJyb3I6
IEZldGNoIGlzIGFib3J0ZWQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uOiBBYm9ydEVycm9yOiBGZXRjaCBpcyBhYm9ydGVkCitUZXN0IHJlcXVlc3QgaW50ZXJj
ZXB0aW9uIG9mIHRoZSBhYm9ydGVkIHJlcXVlc3QuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBzZXRVcAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZS5BYm9ydGVkCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlY2VpdmVkIGVycm9y
OiBFcnJvcjogVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBw
cm9jZXNzZWQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhFcnJvci5BYm9ydGVkCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlY2VpdmVkIGVycm9yOiBF
cnJvcjogVW5hYmxlIHRvIGFib3J0IHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vz
c2VkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmVmMjUwNjE4YzczYTAxMGFlMjI5MWY4Y2YwOTFiNjZlNTFiOWI4NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sCkBAIC0wLDAgKzEsMTAxIEBACisKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwor
YXN5bmMgZnVuY3Rpb24gZmV0Y2hBbmRBYm9ydCgpIHsKKyAgICBsZXQgdXJsID0gImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0IjsK
KyAgICBsZXQgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgICBsZXQgeyBz
aWduYWwgfSA9IGNvbnRyb2xsZXI7CisgICAgZmV0Y2godXJsLCB7IHNpZ25hbCB9KTsKKyAgICBj
b250cm9sbGVyLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3Rv
clRlc3QuZGVidWcoKTsKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5j
U3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIpOworICAgIGxldCB0
YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogInNldFVwIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7
CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuQWJv
cnRlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBpbnRlcmNlcHRpb24g
dGhhdCBmdWxmaWxscyBhYm9ydGVkIHJlcXVlc3QiLAorICAgICAgICBhc3luYyB0ZXN0KCkgewor
ICAgICAgICAgICAgbGV0IGNhbGxiYWNrOworICAgICAgICAgICAgbGV0IGludGVyY2VwdFJlcXVl
c3RXaXRoUmVzcG9uc2VSZXN1bHQgPSBuZXcgUHJvbWlzZShmID0+IGNhbGxiYWNrID0gIGYpOwor
ICAgICAgICAgICAgbGV0IGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UgPSBhc3luYyAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgeyB0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVz
dCB9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg
ICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9u
c2UuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3
b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICJQQVNT
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4
dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LAorICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07
CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0
d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGxv
YWQuLi4iKTsKKyAgICAgICAgICAgIHRhcmdldC5SdW50aW1lQWdlbnQuZXZhbHVhdGUoImZldGNo
QW5kQWJvcnQoKSIpOworICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCBpbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlUmVzdWx0OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
J1JlY2VpdmVkIGVycm9yOiAnICsgZXJyb3IpOworICAgICAgICAgICAgV0kubmV0d29ya01hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50
ZXJjZXB0ZWQsIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmlu
dGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IuQWJvcnRlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
VGVzdHMgcmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCByZWplY3RzIGFib3J0ZWQgcmVxdWVzdCIs
CisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgY2FsbGJhY2s7CisgICAg
ICAgICAgICBsZXQgaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZVJlc3VsdCA9IG5ldyBQcm9t
aXNlKGYgPT4gY2FsbGJhY2sgPSAgZik7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZSA9IGFzeW5jIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7
IHRhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0IH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQu
aW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvci5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlOiBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5HZW5lcmFsLAorICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
TmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnNlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5n
IGxvYWQuLi4iKTsKKyAgICAgICAgICAgIHRhcmdldC5SdW50aW1lQWdlbnQuZXZhbHVhdGUoImZl
dGNoQW5kQWJvcnQoKSIpOworICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCBpbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlUmVzdWx0OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coJ1JlY2VpdmVkIGVycm9yOiAnICsgZXJyb3IpOworICAgICAgICAgICAgV0kubmV0d29ya01h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0
SW50ZXJjZXB0ZWQsIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGlu
dGVyY2VwdGlvbiBvZiB0aGUgYWJvcnRlZCByZXF1ZXN0LjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1jb250aW51ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YTZlZjNhZTI4YWU4ZDY3YjE5ZGRiMTg2MjI1N2U1NGYwZDQwNjQ1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1jb250aW51ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGVz
dCByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyByZXF1ZXN0LgorCisKKz09IFJ1
bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRDb250aW51ZQorLS0gUnVubmluZyB0
ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LkNvbnRpbnVlCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGNvbnRlbnQ6Citm
dW5jdGlvbiBteVNjcmlwdEpTKCkge30KKworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlV3JvbmdTdGFnZQorVHJpZ2dlcmluZyBsb2FkLi4u
CitSZWNlaXZlZCBlcnJvcjogRXJyb3I6IE1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9u
c2UgZm9yIGdpdmVuIHJlcXVlc3RJZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlV3JvbmdJZAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZWNl
aXZlZCBlcnJvcjogRXJyb3I6IE1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3Ig
Z2l2ZW4gcmVxdWVzdElkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGludWUuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGlu
dWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYWNjYzliOTFmZDMxNGZjMmZmODJjMjEzMWExYzAzZGFhM2Jl
NWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sCkBAIC0wLDAgKzEsMTExIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiBmZXRjaERhdGEodXJsKQoreworICAgIGxldCByZXNw
b25zZSA9IGF3YWl0IGZldGNoKHVybCk7CisgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLnRleHQo
KTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdENvbnRpbnVlIik7CisgICAgbGV0
IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworCisgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAic2V0VXAiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAg
ICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tl
KHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL3NjcmlwdC5qcyIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IElu
c3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZSIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCBjb250aW51
ZXMiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IGludGVyY2VwdENv
bnRpbnVlID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1
ZXN0SWQsIHJlcXVlc3QgfSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5l
dHdvcmtBZ2VudC5pbnRlcmNlcHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5k
LkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRl
cmNlcHRDb250aW51ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmlu
ZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVu
dGltZUFnZW50LmV2YWx1YXRlKCJmZXRjaERhdGEoJ3Jlc291cmNlcy9zY3JpcHQuanMnKSIpOwor
ICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVudGltZUFnZW50LmF3YWl0UHJv
bWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0SWQsIHRydWUpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIlJlc3BvbnNlIGNvbnRlbnQ6Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZyhyZXNwb25zZS5yZXN1bHQudmFsdWUpOworICAgICAgICAgICAgV0kubmV0d29ya01h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0
SW50ZXJjZXB0ZWQsIGludGVyY2VwdENvbnRpbnVlKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LkNvbnRpbnVlV3JvbmdTdGFnZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMg
cmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCBjb250aW51ZXMgd2l0aCB0aGUgd3Jvbmcgc3RhZ2Ui
LAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IGNhbGxiYWNrOworICAg
ICAgICAgICAgbGV0IGludGVyY2VwdENvbnRpbnVlUmVzdWx0ID0gbmV3IFByb21pc2UoZiA9PiBj
YWxsYmFjayA9ICBmKTsKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRDb250aW51ZSA9IGFzeW5j
IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7IHRhcmdldCwgcmVxdWVzdElkLCBy
ZXF1ZXN0IH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVlLmludm9r
ZSh7CisgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAg
ICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVz
cG9uc2UsCisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9OworCisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJj
ZXB0Q29udGludWUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcg
bG9hZC4uLiIpOworICAgICAgICAgICAgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0
Y2hEYXRhKCdyZXNvdXJjZXMvc2NyaXB0LmpzJykiKTsKKyAgICAgICAgICAgIGNvbnN0IGVycm9y
ID0gYXdhaXQgaW50ZXJjZXB0Q29udGludWVSZXN1bHQ7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygnUmVjZWl2ZWQgZXJyb3I6ICcgKyBlcnJvcik7CisgICAgICAgICAgICBXSS5uZXR3
b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJl
cXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0Q29udGludWUpOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVy
Y2VwdFJlcXVlc3QuQ29udGludWVXcm9uZ0lkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyB3aXRoIHRoZSB3cm9uZyBzdGFn
ZSIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgY2FsbGJhY2s7Cisg
ICAgICAgICAgICBsZXQgaW50ZXJjZXB0Q29udGludWVSZXN1bHQgPSBuZXcgUHJvbWlzZShmID0+
IGNhbGxiYWNrID0gIGYpOworICAgICAgICAgICAgbGV0IGludGVyY2VwdENvbnRpbnVlID0gYXN5
bmMgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1ZXN0SWQs
IHJlcXVlc3QgfSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUuaW52
b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6ICd3cm9uZ0lkJywKKyAgICAg
ICAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0
d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNl
cHRlZCwgaW50ZXJjZXB0Q29udGludWUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5l
dmFsdWF0ZSgiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvc2NyaXB0LmpzJykiKTsKKyAgICAgICAgICAg
IGNvbnN0IGVycm9yID0gYXdhaXQgaW50ZXJjZXB0Q29udGludWVSZXN1bHQ7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygnUmVjZWl2ZWQgZXJyb3I6ICcgKyBlcnJvcik7CisgICAgICAg
ICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5h
Z2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0Q29udGludWUpOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1
ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyByZXF1ZXN0LjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4t
cmVzb3VyY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMTI1OTA0ODM1ZWYxMGI2YzA2MDM0
ZjYxNWYzZGVmMTE4ZjllYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQUxFUlQ6IE9SSUdJTkFMIEhUTUwgQ09OVEVOVAor
QUxFUlQ6IFJFUExBQ0VEIEhUTUwgQ09OVEVOVAorT3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
bWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjEy
NTkwNDgzNWVmMTBiNmMwNjAzNGY2MTVmM2RlZjExOGY5ZWFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorQUxFUlQ6IE9SSUdJTkFMIEhUTUwgQ09OVEVOVAorQUxFUlQ6IFJFUExBQ0VEIEhUTUwgQ09O
VEVOVAorT3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJj
ZS13aXRoLXJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk1NjA4ODk1ZTk4ZDFkYmE4ZjU2YzU5OGI1NTllNzI4ODIwOTliYWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCkBAIC0w
LDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9
IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnNlIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWFpblJlc291cmNlIHdpdGggcmVzcG9uc2UiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIk1haW4gcmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2Vw
dGlvbiBvbiBuZXh0IHBhZ2UgbG9hZCBhbmQgZnVsZmlsbHMgcmVxdWVzdCIsCisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFy
Z2V0KCk7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2Vw
dGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQu
RW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UgPSAoZXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7
CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAg
ICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgICAgICAg
ICBjb250ZW50OiBgPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9gK2BzY3JpcHQ+PC9oZWFkPjxib2R5PjxwPk92
ZXJyaWRkZW4gcGFnZSBjb250ZW50PC9wPjxzY3JpcHQ+YWxlcnQoIlJFUExBQ0VEIEhUTUwgQ09O
VEVOVCIpOyBUZXN0UGFnZS5jb21wbGV0ZVRlc3QoKTs8L2ArYHNjcmlwdD48L2JvZHk+PC9odG1s
PmAsCisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAg
ICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDog
Ik9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGlu
dGVyY2VwdFdpdGhSZXNwb25zZSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2Fk
UGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5U
ZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgbWFpbiByZXNvdXJjZSBs
b2FkIHdpdGggcmVzcG9uc2UuPC9wPgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRNTCBDT05U
RU5UIik7PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVz
b3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MTRhNjhhZTEz
N2Y1MDJiMWI3NGQyNWYzNWYwYmNmY2E5ZTVhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4t
cmVzb3VyY2UuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdv
cmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NYWluUmVzb3VyY2UiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIk1haW4gcmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlv
biBvbiBuZXh0IHBhZ2UgbG9hZCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgICAgICBhd2Fp
dCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAg
ICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLmh0bWwiLAorICAgICAgICAgICAgICAgIHN0YWdl
OiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1
ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICB1cmw6ICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2Vw
dC1yZXF1ZXN0LW92ZXJyaWRlbi1wYWdlLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0SWQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBX
SS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50
LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0
ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBpbnRlcmNlcHRp
bmcgdGhlIG1haW4gcmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0PmFsZXJ0KCJPUklHSU5BTCBI
VE1MIENPTlRFTlQiKTs8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
cHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJiNzQ1MzM0MGUzMTliYjEyYmNmZjQwNWIxNTEwNDMzZDQxN2Y0ZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODQgQEAKK1Rl
c3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gYWx0ZXJpbmcgcmVxdWVzdCBwcm9wZXJ0aWVzLgorCisK
Kz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdAorLS0g
UnVubmluZyB0ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFp
bHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5w
aHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IFBPU1QKKyAgUmVxdWVz
dCBIZWFkZXJzOgorICAgIENvbnRlbnQtTGVuZ3RoOiAwCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRGVsZXRlCitUcmlnZ2VyaW5nIGxvYWQu
Li4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhv
ZDogREVMRVRFCisgIFJlcXVlc3QgSGVhZGVyczoKKyAgICBDb250ZW50LUxlbmd0aDogMAorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZE5vblN0
YW5kYXJkCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBV
Ukw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50
ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogTk9OU1RBTkRBUkQKKyAgUmVxdWVzdCBIZWFkZXJz
OgorICAgIENvbnRlbnQtTGVuZ3RoOiAwCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3Jr
LmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRW1wdHkKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVz
dCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0
LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBHRVQKKyAg
UmVxdWVzdCBIZWFkZXJzOgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0LlVybAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVS
STogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bmV3VVJM
PXZhbHVlCisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bmV3VVJMPXZhbHVlCisgIE1ldGhv
ZDogR0VUCisgIFJlcXVlc3QgSGVhZGVyczoKKyAgR2V0OgorICAgIG5ld1VSTDogdmFsdWUKKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VcmxGcmFnbWVu
dAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2Vw
dC1lY2hvLnBocAorICBNZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVXJsRW1wdHkKK1RyaWdnZXJp
bmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBUeXBlRXJyb3I6IFRoZSBVUkwgY2Fu4oCZ
dCBiZSBzaG93bgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LkhlYWRlcnMKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6
IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJlc3Bv
bnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFkZXJzOgor
ICAgIFgtVmFsdWU6IG92ZXJyaWRkZW4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdC5Qb3N0RGF0YQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRl
dGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNo
by5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IFBPU1QKKyAgUmVx
dWVzdCBIZWFkZXJzOgorICAgIENvbnRlbnQtTGVuZ3RoOiAxNgorICAgIENvbnRlbnQtVHlwZTog
YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCisgIFBvc3Q6CisgICAgdmFsdWU6IG92
ZXJyaWRkZW4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YjEzMWI0YTg0YjdjODMxYzhkYjBkYzQ5MGM3MzU1YzkyM2VmMWI4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwKQEAgLTAsMCArMSwxODQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSh1cmwpCit7CisgICAgbGV0IHJlc3Bv
bnNlID0gYXdhaXQgZmV0Y2godXJsKTsKKyAgICAvLyBFdmFsIHRvIGFjY2VwdCB0cmFpbGluZyBj
b21hIEpTT04uCisgICAgbGV0IGRhdGEgPSBldmFsKCcoJyArIChhd2FpdCByZXNwb25zZS50ZXh0
KCkgfHwgInt9IikgKyAnKScpOworICAgIGRhdGFbInJlc3BvbnNlVVJMIl0gPSByZXNwb25zZS51
cmw7CisgICAgcmV0dXJuIGRhdGE7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHBvc3REYXRhKHVybCkK
K3sKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHsKKyAgICAgICAgbWV0aG9k
OiAiUE9TVCIsCisgICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAgICAgICJDb250ZW50LVR5cGUi
OiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgorICAgICAgICB9LAorICAgICAg
ICBib2R5OiAidmFsdWU9b3JpZ2luYWwiCisgICAgfSk7CisgICAgLy8gRXZhbCB0byBhY2NlcHQg
dHJhaWxpbmcgY29tYSBKU09OLgorICAgIGxldCBkYXRhID0gZXZhbCgnKCcgKyAoYXdhaXQgcmVz
cG9uc2UudGV4dCgpIHx8ICJ7fSIpICsgJyknKTsKKyAgICBkYXRhWyJyZXNwb25zZVVSTCJdID0g
cmVzcG9uc2UudXJsOworICAgIHJldHVybiBkYXRhOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsu
aW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKyAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWlu
VGFyZ2V0KCk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJzZXRV
cCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0
d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDog
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJj
ZXB0LWVjaG8ucGhwIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgYXN5bmMgZnVuY3Rpb24gbG9nUmVxdWVzdChyZXN1bHQpIHsK
KyAgICAgICAgaWYgKCFyZXN1bHQudmFsdWUpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKGAgICR7cmVzdWx0LmRlc2NyaXB0aW9ufWApOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGxldCByZXF1ZXN0ID0gcmVzdWx0LnZhbHVlOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZyhgICBVUkk6ICR7cmVxdWVzdC51cml9YCk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKGAgIFJlc3BvbnNlIFVSTDogJHtyZXF1ZXN0LnJlc3BvbnNlVVJMfWApOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBNZXRob2Q6ICR7cmVxdWVzdC5tZXRob2R9YCk7Cisg
ICAgICAgIGxldCBoZWFkZXJLZXlzID0gT2JqZWN0LmtleXMocmVxdWVzdC5oZWFkZXJzKTsKKyAg
ICAgICAgaWYgKGhlYWRlcktleXMubGVuZ3RoKSB7CisgICAgICAgICAgICBoZWFkZXJLZXlzLnNv
cnQoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFJlcXVlc3QgSGVhZGVyczpg
KTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgaGVhZGVyS2V5cykgeworICAgICAgICAg
ICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJYLSIpICYmICFuYW1lLnN0YXJ0c1dpdGgoIkNv
bnRlbnQtIikpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IGxldCB2YWx1ZSA9IHJlcXVlc3QuaGVhZGVyc1tuYW1lXTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgbGV0IGdldEtleXMgPSBPYmplY3Qua2V5cyhyZXF1ZXN0LmdldCk7
CisgICAgICAgIGlmIChnZXRLZXlzLmxlbmd0aCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIiAgR2V0OiIpOworICAgICAgICAgICAgZ2V0S2V5cy5zb3J0KCk7CisgICAgICAgICAg
ICBmb3IgKGxldCBuYW1lIG9mIGdldEtleXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgdmFsdWUg
PSByZXF1ZXN0LmdldFtuYW1lXTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhg
ICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgbGV0IHBvc3RLZXlzID0gT2JqZWN0LmtleXMocmVxdWVzdC5wb3N0KTsKKyAgICAgICAgaWYg
KHBvc3RLZXlzLmxlbmd0aCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiAgUG9z
dDoiKTsKKyAgICAgICAgICAgIHBvc3RLZXlzLnNvcnQoKTsKKyAgICAgICAgICAgIGZvciAobGV0
IG5hbWUgb2YgcG9zdEtleXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXF1ZXN0
LnBvc3RbbmFtZV07CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgICAke25h
bWV9OiAke3ZhbHVlfWApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChy
ZXF1ZXN0LmVycm9yKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgRXJyb3I6ICR7
cmVxdWVzdC5lcnJvcn1gKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRUZXN0Q2FzZSh7bmFt
ZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Npb24sIHNldHVwLCB0ZWFyZG93biwgb3ZlcnJpZGVzfSkg
eworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLCBkZXNjcmlw
dGlvbiwgc2V0dXAsIHRlYXJkb3duLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QgfSA9IGV2ZW50
LmRhdGE7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0
V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIC4uLm92ZXJyaWRlcywKKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdElu
dGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBy
ZXNwb25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuZXZhbHVhdGUoZXhwcmVzc2lvbik7
CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVudGltZUFnZW50LmF3
YWl0UHJvbWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0SWQsIHRydWUpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0IGRldGFpbHM6Iik7CisgICAgICAgICAgICAg
ICAgYXdhaXQgbG9nUmVxdWVzdChyZXNwb25zZS5yZXN1bHQpOworICAgICAgICAgICAgICAgIFdJ
Lm5ldHdvcmtNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZl
bnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2QiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiIsCisgICAgICAgIGV4cHJlc3Np
b246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAg
IG92ZXJyaWRlczogeyBtZXRob2Q6ICJQT1NUIiB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZERlbGV0
ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0
aW9uIHdpdGggREVMRVRFIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3Vy
Y2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDog
IkRFTEVURSIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
Ik5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2ROb25TdGFuZGFyZCIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGggTk9OU1RB
TkRBUkQiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJj
ZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgbWV0aG9kOiAiTk9OU1RBTkRB
UkQiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRW1wdHkiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRoIE5PTlNUQU5EQVJEIiwKKyAg
ICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBo
cCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIiIgfSwKKyAgICB9KTsKKworICAg
IGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5V
cmwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2Vw
dGlvbiB3aXRoIGRpZmZlcmVudCBVUkwiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRh
KCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsg
dXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9p
bnRlcmNlcHQtZWNoby5waHA/bmV3VVJMPXZhbHVlIiB9LAorICAgIH0pOworCisgICAgYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVybEZyYWdt
ZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNl
cHRpb24gd2l0aCBkaWZmZXJlbnQgVVJMIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0
YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7
IHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
aW50ZXJjZXB0LWVjaG8ucGhwI2ZyYWdtZW50IiB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVybEVtcHR5IiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24g
d2l0aCBkaWZmZXJlbnQgVVJMIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVz
b3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IHVybDog
IiIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdC5IZWFkZXJzIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
cyByZXF1ZXN0IGhlYWRlcnMgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZl
dGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJp
ZGVzOiB7IGhlYWRlcnM6IHsgIlgtVmFsdWUiOiAib3ZlcnJpZGRlbiIgfSB9LAorICAgIH0pOwor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LlBvc3REYXRhIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IHBvc3Qg
ZGF0YSBpbnRlcmNlcHRpb24iLAorICAgICAgICBleHByZXNzaW9uOiAicG9zdERhdGEoJ3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeworICAgICAg
ICAgICAgbWV0aG9kOiAiUE9TVCIsCisgICAgICAgICAgICBwb3N0RGF0YTogYnRvYSgidmFsdWU9
b3ZlcnJpZGRlbiIpLAorICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gYWx0ZXJpbmcgcmVxdWVzdCBw
cm9wZXJ0aWVzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3Vy
Y2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGU1ZjRlMDdlZmI2MjZhM2ZhM2ZjZTk1NmQzYzUxMWY5ODAyM2FhZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxFUlQ6IERF
RkFVTFQgb3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURFTiBvdmVycmlkZS5qcyBURVhU
CitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVzb3VyY2Ug
bG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNv
dXJjZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTll
NjBjY2Y1MTE5ZTA0YzA3ZWMxNGIxOThhMmM3MGQ1Y2NiZGIwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0FM
RVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24g
d2l0aCBlcnJvciBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisKKworPT0gUnVubmluZyB0ZXN0
IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBlcnJvcgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3Vy
Y2Utd2l0aC1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0MDgxMTgzNGZmY2ZmMzhmYWZjNDk4NzVj
ZDAyZGQ0OWZkOTg1NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJy
b3IuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50
ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggZXJy
b3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRl
cmNlcHRpb24gd2l0aCBlcnJvciIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgICAgICBhd2Fp
dCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAg
ICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvb3ZlcnJpZGUuanMiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOwor
ICAgIAorICAgICAgICAgICAgbGV0IGludGVyY2VwdFdpdGhSZXF1ZXN0ID0gKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVu
dC5kYXRhOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVx
dWVzdFdpdGhFcnJvci5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisg
ICAgICAgICAgICAgICAgICAgIGVycm9yVHlwZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdv
cmsuUmVzb3VyY2VFcnJvclR5cGUuR2VuZXJhbCwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0
aFJlcXVlc3QpOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uo
e2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCBy
ZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGVycm9yIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48
L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhkNzBhMTY2Yzc2OTEzYThlZGUzMzgyZWI5YzJmOGVmOTkyZWE3ODIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorQUxFUlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJS
SURERU4gb3ZlcnJpZGUuanMgVEVYVAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJl
c3BvbnNlIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3Vp
dGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIHJlc3BvbnNl
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVlOTAwNDQ5M2EyMzQ1NTc3
YzA0M2RlMjIxNGM2MWVkNjFlMjg2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Ut
d2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgi
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIik7CisKKyAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVz
b3VyY2Ugd2l0aCByZXNwb25zZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2Ug
dXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlIiwKKyAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQo
KTsKKworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRp
b24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLmpzIiwKKyAgICAgICAgICAgICAg
ICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVl
c3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGludGVyY2VwdFdpdGhSZXF1
ZXN0ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJ
ZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3Jr
QWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5pbnZva2UoeworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9q
YXZhc2NyaXB0IiwKKyAgICAgICAgICAgICAgICAgICAgY29udGVudDogYGFsZXJ0KCJPVkVSUklE
REVOIG92ZXJyaWRlLmpzIFRFWFQiKTsgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQo
Ik92ZXJyaWRlQ29udGVudERpZExvYWQiKTtgLAorICAgICAgICAgICAgICAgICAgICBiYXNlNjRF
bmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAg
ICAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAgICAgICAgICAgIGhlYWRl
cnM6IHt9LAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZl
bnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAg
ICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCBy
ZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0
b3JUZXN0LmF3YWl0RXZlbnQoIk92ZXJyaWRlQ29udGVudERpZExvYWQiKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBp
bnRlcmNlcHRpb24gd2l0aCByZXNwb25zZSBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuPC9wPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVycmlkZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDg4NGFhZmFiOGE2MTQyNTNhYzU1ZmYzYWRhZWRkMjYzNzAwYzQ3YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbApAQCAtMCwwICsxLDQyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdCIpOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
LlN1YnJlc291cmNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdWJyZXNvdXJjZSB1c2VzIHJl
cXVlc3QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAg
IGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3YWl0
IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAg
ICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9vdmVycmlkZS5qcyIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tl
bmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7
CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVz
dC5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRl
bi1zY3JpcHQuanMiLAorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRl
ZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JU
ZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNl
czogdHJ1ZX0pOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJP
dmVycmlkZUNvbnRlbnREaWRMb2FkIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2Vw
dGluZyB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292
ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0
aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVhMWMwMjAzZWE5YWNiMDA2NDM4MWMyMDVhYjFiZDI3NGRiNzdjOTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzMg
QEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNl
cHRpb24gd2l0aCByZXNwb25zZS4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IHNldFVw
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnNlLlRleHQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJMOiBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRl
LnR4dAorICBNSU1FIFR5cGU6IHRleHQvcGxhaW4KKyAgU3RhdHVzOiA5ODcgT3ZlcnJpZGUgU3Rh
dHVzIFRleHQKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IHRleHQvcGxh
aW4KKyAgICB4LW92ZXJyaWRlLWhlYWRlci0xOiBPdmVycmlkZS1IZWFkZXItVmFsdWUtMQorICAg
IHgtb3ZlcnJpZGUtaGVhZGVyLTI6IE92ZXJyaWRlLUhlYWRlci1WYWx1ZS0yCisgIENvbnRlbnQ6
IFBBU1MgLSBPVkVSUklEREVOIFRFWFQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5KYXZhU2NyaXB0CitUcmlnZ2VyaW5nIGxvYWQu
Li4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQKKyAgTUlNRSBUeXBlOiBhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0CisgIFN0YXR1czogMjAwIFN1cGVyIE9LCisgIFJlc3BvbnNlIEhlYWRl
cnM6CisgICAgY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0CisgICAgeC1jdXN0
b20taGVhZGVyOiBIZWFkZXIgdmFsdWUKKyAgQ29udGVudDogLyogUEFTUyAqLyAoZnVuY3Rpb24o
KSB7IC8qIE9WRVJSSURERU4gKi8gfSkoKTsKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5JbWFnZQorVHJpZ2dlcmluZyBsb2FkLi4u
CitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUgVHlwZTogaW1hZ2UvcG5n
CisgIFN0YXR1czogMjAwIE9LCisgIFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVudC10eXBl
OiBpbWFnZS9wbmcKKyAgQ29udGVudDogPGRhdGE+CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVVJMLlF1ZXJ5U3RyaW5nCitUcmln
Z2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQ/cz0yCisgIE1J
TUUgVHlwZTogdGV4dC9wbGFpbgorICBTdGF0dXM6IDIwMCBPSworICBSZXNwb25zZSBIZWFkZXJz
OgorICAgIGNvbnRlbnQtbGVuZ3RoOiAyOQorICAgIGNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbgor
ICBDb250ZW50OiBkZWZhdWx0IG92ZXJyaWRlLnR4dCBjb250ZW50CisKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuRnJhZ21l
bnQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJMOiBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4dAor
ICBNSU1FIFR5cGU6IHRleHQvcGxhaW4KKyAgU3RhdHVzOiAyMDAgT0sKKyAgUmVzcG9uc2UgSGVh
ZGVyczoKKyAgICBjb250ZW50LXR5cGU6IHRleHQvcGxhaW4KKyAgICB4LWV4cGVjdGVkOiBQQVNT
CisgIENvbnRlbnQ6IFBBU1MKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdFdpdGhSZXNwb25zZS40MDQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2Ug
ZGV0YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL292ZXJyaWRlLnR4dAorICBNSU1FIFR5cGU6IHRleHQvcGxhaW4KKyAgU3RhdHVz
OiA0MDQgTm90IEZvdW5kCisgIFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVudC10eXBlOiB0
ZXh0L3BsYWluCisgICAgeC1leHBlY3RlZDogUEFTUworICBDb250ZW50OiBQQVNTCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGU0ZTE2ZTUwZDhjMjQ4MWEwNTE0ZTQ3Mjc5NDdiNmQ3NmE1NzY1OQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAgKzEsMTgxIEBACisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKworYXN5bmMgZnVuY3Rpb24gdHJpZ2dlck92ZXJyaWRlTG9hZCh1cmxTdWZmaXgpIHsKKyAg
ICBsZXQgdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvb3ZlcnJpZGUudHh0IjsKKyAgICBpZiAodXJsU3VmZml4KQorICAgICAgICB1cmwgKz0g
dXJsU3VmZml4OworCisgICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0
Y2godXJsKTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHVybDogcmVzcG9uc2UudXJs
LAorICAgICAgICAgICAgdGV4dDogYXdhaXQgcmVzcG9uc2UudGV4dCgpLAorICAgICAgICAgICAg
c3RhdHVzOiByZXNwb25zZS5zdGF0dXMsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25z
ZS5zdGF0dXNUZXh0LAorICAgICAgICAgICAgaGVhZGVyczogWy4uLnJlc3BvbnNlLmhlYWRlcnNd
CisgICAgICAgIH07CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm4geyBlcnJvcjog
ZS5tZXNzYWdlIH07CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0
b3JUZXN0LmRlYnVnKCk7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3lu
Y1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UiKTsKKyAgICBsZXQg
dGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJzZXRVcCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAg
ICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2Uo
eworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0IiwKKyAgICAgICAgICAgICAgICBzdGFnZTog
SW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYXN5bmMgZnVuY3Rpb24gbG9n
UmVzcG9uc2UocmVzcG9uc2UpIHsKKyAgICAgICAgcmVzcG9uc2UuaGVhZGVycyA9IG5ldyBNYXAo
cmVzcG9uc2UuaGVhZGVycyk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFVSTDogJHty
ZXNwb25zZS51cmx9YCk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIE1JTUUgVHlwZTog
JHtyZXNwb25zZS5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIil9YCk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKGAgIFN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3Rh
dHVzVGV4dH1gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgUmVzcG9uc2UgSGVhZGVy
czpgKTsKKyAgICAgICAgbGV0IGtleXMgPSBbLi4ucmVzcG9uc2UuaGVhZGVycy5rZXlzKCldOwor
ICAgICAgICBrZXlzLnNvcnQoKTsKKyAgICAgICAgZm9yIChsZXQgbmFtZSBvZiBrZXlzKSB7Cisg
ICAgICAgICAgICBsZXQgdmFsdWUgPSByZXNwb25zZS5oZWFkZXJzLmdldChuYW1lKTsKKyAgICAg
ICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJ4LSIpICYmICFuYW1lLnN0YXJ0c1dpdGgoImNv
bnRlbnQtIikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgIH0KKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coYCAgQ29udGVudDogJHtyZXNwb25zZS50ZXh0fWApOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgc2V0dXAsIHRl
YXJkb3duLCBleHByZXNzaW9uLCByZXNwb25zZURhdGF9KSB7CisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24s
CisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIGxldCBpbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGxldCB7IHRhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0IH0gPSBldmVudC5kYXRhOworICAgICAg
ICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC4uLnJlc3BvbnNlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVy
Y2VwdGVkLCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICAgICAg
bGV0IHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNz
aW9uKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdl
bnQuYXdhaXRQcm9taXNlKHJlc3BvbnNlLnJlc3VsdC5vYmplY3RJZCwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlc3BvbnNlIGRldGFpbHM6Iik7CisgICAgICAg
ICAgICAgICAgYXdhaXQgbG9nUmVzcG9uc2UocmVzcG9uc2UucmVzdWx0LnZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk5ldHdv
cmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0UmVxdWVzdFdpdGhS
ZXNwb25zZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNw
b25zZS5UZXh0IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJJbnRlcmNlcHQgcmVxdWVzdCB3aXRo
IHRleHQgY29udGVudC4iLAorICAgICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9h
ZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7CisgICAgICAgICAgICBjb250ZW50OiBgUEFT
UyAtIE9WRVJSSURERU4gVEVYVGAsCisgICAgICAgICAgICBiYXNlNjRFbmNvZGVkOiBmYWxzZSwK
KyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICBzdGF0dXM6
IDk4NywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPdmVycmlkZSBTdGF0dXMgVGV4dCIsCisg
ICAgICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAgICAgIlgtT3ZlcnJpZGUtSGVhZGVy
LTEiOiAiT3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTEiLAorICAgICAgICAgICAgICAgICJYLU92ZXJy
aWRlLUhlYWRlci0yIjogIk92ZXJyaWRlLUhlYWRlci1WYWx1ZS0yIiwKKyAgICAgICAgICAgIH0s
CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuSmF2YVNjcmlwdCIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiSW50ZXJjZXB0IHJlcXVlc3Qgd2l0aCBqYXZhc2NyaXB0IGNvbnRl
bnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQoKWAsCisgICAg
ICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgY29udGVudDogYC8qIFBBU1MgKi8gKGZ1
bmN0aW9uKCkgeyAvKiBPVkVSUklEREVOICovIH0pKCk7YCwKKyAgICAgICAgICAgIGJhc2U2NEVu
Y29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWltZVR5cGU6ICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiwKKyAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgc3RhdHVzVGV4dDog
IlN1cGVyIE9LIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAgICAgICAgICAiWC1D
dXN0b20tSGVhZGVyIjogIkhlYWRlciB2YWx1ZSIsCisgICAgICAgICAgICB9LAorICAgICAgICB9
LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkltYWdlIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJJbnRlcmNlcHQgcmVxdWVzdCB3aXRoIGltYWdlIGNvbnRlbnQuIiwKKyAgICAgICAgZXhwcmVz
c2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQoKWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogewor
ICAgICAgICAgICAgY29udGVudDogYnRvYSgiPGRhdGE+IiksCisgICAgICAgICAgICBiYXNlNjRF
bmNvZGVkOiB0cnVlLAorICAgICAgICAgICAgbWltZVR5cGU6ICJpbWFnZS9wbmciLAorICAgICAg
ICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAg
ICAgICAgaGVhZGVyczoge30sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Uu
VVJMLlF1ZXJ5U3RyaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IG92ZXJyaWRlcyB3
aXRoIGRpZmZlcmVudCBxdWVyeSBzdHJpbmdzLiIsCisgICAgICAgIGV4cHJlc3Npb246IGB0cmln
Z2VyT3ZlcnJpZGVMb2FkKCI/cz0yIilgLAorICAgICAgICByZXNwb25zZURhdGE6IHsKKyAgICAg
ICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgY29udGVudDogIlBBU1Mi
LAorICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1
czogMjAwLAorICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgIGhlYWRl
cnM6IHsiWC1FeHBlY3RlZCI6ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBh
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRo
UmVzcG9uc2UuVVJMLkZyYWdtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IG92ZXJy
aWRlIGZvciBhIGxvYWQgd2l0aCBhIGZyYWdtZW50LiIsCisgICAgICAgIGV4cHJlc3Npb246IGB0
cmlnZ2VyT3ZlcnJpZGVMb2FkKCIjZnJhZyIpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7Cisg
ICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBiYXNlNjRFbmNvZGVkOiBm
YWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAgICBz
dGF0dXM6IDIwMCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAgICBo
ZWFkZXJzOiB7IlgtRXhwZWN0ZWQiOiAiUEFTUyJ9LAorICAgICAgICB9LAorICAgIH0pOworCisg
ICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnNlLjQwNCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBmb3IgYSA0MDQg
b3ZlcnJpZGUuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQoKWAs
CisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgY29udGVudDogIlBBU1MiLAor
ICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICBtaW1lVHlwZTog
InRleHQvcGxhaW4iLAorICAgICAgICAgICAgc3RhdHVzOiA0MDQsCisgICAgICAgICAgICBzdGF0
dXNUZXh0OiAiTm90IEZvdW5kIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsiWC1FeHBlY3RlZCI6
ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNB
bmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlLjwvcD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ5YWI1MGE1N2E0NGRhOGJjNmYxMThlYjVmZGViYmU3MTJhZjRlMWMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9p
bnRlcmNlcHQtZWNoby5waHAKQEAgLTAsMCArMSwxOCBAQAoreworICAgICJ1cmkiOiAiPD9waHAg
ZWNobyAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSA/PiIsCisgICAgIm1ldGhvZCI6ICI8P3BocCBl
Y2hvICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddOyA/PiIsCisgICAgImhlYWRlcnMiOiB7Cis8
P3BocCBmb3JlYWNoIChnZXRhbGxoZWFkZXJzKCkgYXMgJG5hbWUgPT4gJHZhbHVlKSB7ID8+Cisg
ICAgICAgICI8P3BocCBlY2hvICRuYW1lOyA/PiI6ICI8P3BocCBlY2hvICR2YWx1ZTsgPz4iLAor
PD9waHAgfSA/PiB9LAorICAgICJnZXQiOiB7Cis8P3BocCBmb3JlYWNoICgkX0dFVCBhcyAkbmFt
ZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAgICAgIjw/cGhwIGVjaG8gJG5hbWU7ID8+IjogIjw/cGhw
IGVjaG8gJHZhbHVlOyA/PiIsCis8P3BocCB9ID8+CisgICAgfSwKKyAgICAicG9zdCI6IHsKKzw/
cGhwIGZvcmVhY2ggKCRfUE9TVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAgICAgIjw/
cGhwIGVjaG8gJG5hbWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8P3BocCB9ID8+
CisgICAgfSwKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1wYWdlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRl
cmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmMjIxNjdlZGIw
YmJlM2ZiMDcyYzQ3MWVjODIzNzQ5NTNhNWQyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVx
dWVzdC1vdmVycmlkZW4tcGFnZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+PC9oZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvaW5zcGVjdG9yLXRlc3QuanMiPgorICAgIDwvc2NyaXB0PgorICAgIDxib2R5PgorICAgICAg
ICA8cD5PdmVycmlkZGVuIHBhZ2UgY29udGVudDwvcD4KKyAgICAgICAgPHNjcmlwdD5hbGVydCgi
UkVQTEFDRUQgSFRNTCBDT05URU5UIik7IFRlc3RQYWdlLmNvbXBsZXRlVGVzdCgpOzwvc2NyaXB0
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRl
bi1zY3JpcHQuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc3OGVjNGUyNjExNTdkMzMwOTE5YzEzMjg5OTk1NTc3OTg5MzdlYWIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9p
bnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCkBAIC0wLDAgKzEsMiBAQAorYWxl
cnQoIk9WRVJSSURFTiBvdmVycmlkZS5qcyBURVhUIik7CitUZXN0UGFnZS5kaXNwYXRjaEV2ZW50
VG9Gcm9udGVuZCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5q
cwppbmRleCBhMDI2NDlkNTZiZGIzZDI4NWMxZjBkN2Y4MDBjZmU0MTA4OTIyNjQxLi44MzFhNjFm
Njc4NWU0NDg4YjEyZDdkZmRlZjFmZTY2ZDM3NTUxMjIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5q
cwpAQCAtODcsMTIgKzg3LDE0IEBAIFRlc3RQYWdlLnJ1blRlc3QgPSB3aW5kb3cucnVuVGVzdCA9
IGZ1bmN0aW9uKCkKICAgICBpZiAodHlwZW9mIHRlc3RGdW5jdGlvbiAhPT0gImZ1bmN0aW9uIikg
ewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHNlbmQgdGVzdCgpIGJlY2F1c2UgaXQgaXMgbm90
IGEgZnVuY3Rpb24uIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgbGV0IHVybCA9IHRlc3RSdW5uZXIuaW5zcGVjdG9yVGVz
dFN0dWJVUkw7CiAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBvYnRh
aW4gaW5zcGVjdG9yIHRlc3Qgc3R1YiBVUkwuIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuSW5pdGlh
bGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZChpbml0aWFsaXplcnMpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51
ZS1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVz
b3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbAppbmRleCA0NDgwNjQyMDA0NDc2
OTdmYjA3ZjQxNmU5Nzg2Mzk4ZTAwM2QyNDYwLi5kNjZlMTQwZWI3MTc4NjQ3YzM4ODYyOWIwZDEz
ZTFhYTAxYTAzMGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9s
b2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVl
LXJlc3BvbnNlLmh0bWwKQEAgLTQ2LDcgKzQ2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICAvLyBMZXQgdGhlIGxvYWQgY29udGludWUuCiAgICAgICAgICAgICBhd2FpdCBQcm9taXNl
LmFsbChbCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRFdmVudCh7ZXZl
bnQ6ICJOZXR3b3JrLnJlc3BvbnNlUmVjZWl2ZWQifSksCi0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdENvbnRp
bnVlIiwgcGFyYW1zOiB7cmVxdWVzdElkOiBtZXNzYWdlT2JqZWN0LnBhcmFtcy5yZXF1ZXN0SWR9
fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRo
b2Q6ICJOZXR3b3JrLmludGVyY2VwdENvbnRpbnVlIiwgcGFyYW1zOiB7cmVxdWVzdElkOiBtZXNz
YWdlT2JqZWN0LnBhcmFtcy5yZXF1ZXN0SWQsIHN0YWdlOiAicmVzcG9uc2UifX0pLAogICAgICAg
ICAgICAgXSk7CiAgICAgICAgICAgICBQcm90b2NvbFRlc3QucGFzcygiUmVzcG9uc2UgcmVjZWl2
ZWQuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24gYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NGUyYjBkOTk2
N2NlYjFlZDdlMzJjZDE5MjkzNWRmMTc2NTgxMjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uCkBA
IC0wLDAgKzEgQEAKK2ludGVyY2VwdGVkIHJlcXVlc3QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401238</attachid>
            <date>2020-06-05 23:15:10 -0700</date>
            <delta_ts>2020-06-11 08:18:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200605231509.patch</filename>
            <type>text/plain</type>
            <size>107199</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YjBmYTIwZmE0MWJiOWQ3YzU2ODhlOWUzODk5YzZjYTA3MTFkZWQ1Li5jNTY1N2Y3MmM4YmNiNGY1
MTIwYTM3MTY2ZTk3ZjJkODljNDcwZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0wMyAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cCBuZWVkcyB0byAjaW5jbHVkZSBPcGVyYW5kc0lubGluZXMuaC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNmU0
MzdjODg3ODE1ZWVjNjg5YmIyNDQwYWMzYTcxNDE5MzZiOTM0Li43NzI2ZDkwZDAyZjZiYjYyNjBh
ZDE1MWEwZTg3OWE2ZmZlMmI4N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAt
MDYtMDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJv
ZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAg
ICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qg
bm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3Ig
ZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVl
c3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29u
dGludWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1t
YWluLXJlc291cmNlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNl
LXdpdGgtZXJyb3IuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3Qtc3VicmVzb3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLmh0bWwKKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVl
c3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1
ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNldEludGVy
Y2VwdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjphZGRJbnRlcmNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpyZW1vdmVJbnRlcmNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvcik6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q6OlBlbmRpbmdJbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6UGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3Q6OmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OlBlbmRpbmdJbnRlcmNlcHRSZXF1
ZXN0Ojpjb250aW51ZVdpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6SW50ZXJjZXB0OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6CisKIDIwMjAtMDYtMDMgIFJvYiBCdWlzICA8
cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBEaXNhbGxvdyByZXNwb25zZXMgd2hlbiBhIHJl
c3BvbnNlIGNvbnRhaW5zIGludmFsaWQgaGVhZGVyIHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKaW5kZXggNzNkNWY4ODk0YWIxYjczMTJhYjViY2U4OGI3ZTcyMGJiNjQwZGE4Ny4uMjNjYWFl
NTJmNTNiMmMwNzQ2OTFkYmQzZmU1MjNmZGFkNWZhODkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDYtMDMgIFBhdmVsICA8cGF2ZWwuZmVsZG1hbkBn
bWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVlc3QgaW50
ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb24gdG8g
dGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3JrLmlu
dGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBiZSBjb250
aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2FuIG5vdyBo
YXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVycmlkZSk6Cisg
ICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxSZXNvdXJjZU92
ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0SW50
ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlc3BvbnNl
SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLl9oYW5k
bGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtPYnNl
cnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKwogMjAyMC0wNi0wMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogR3Jh
cGhpY3M6IHNob3VsZCB1c2UgdGhlIGBpZGAgKG5hbWUpIG9mIHRoZSBhbmltYXRpb24gaWYgaXQg
ZXhpc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGY1YTg4MDU0M2RhYjFkMTkzODU0ODBiMjA0NTJhOTFmOGQzYTVi
YzIuLmI2NzY0MGRkMTk5NzUxY2I3YzE0YmJmZDczOGIzNzk1NDZiNDRjNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjAtMDYtMDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFu
QGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBp
bnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0
byB0aGUgTmV0d29yayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsu
aW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNv
bnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93
IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIwLTA2LTAzICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEhpZGUgdGhl
IFBpUCBidXR0b24gaW4gZnVsbHNjcmVlbiBtb2RlIGlmIFBpUCBpcyBkaXNhYmxlZCBpbiBwcmVm
ZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9OZXR3b3JrLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL05ldHdvcmsuanNvbgppbmRleCBmMjQyNWRkNmFmYzBlZmJmMWQxMTUyMjBmZDQyNDZhZmUy
ZmI5MmUxLi41M2VkNTZlOTYxMDNiNDMzNGFjYTQ1MmRjZDY0YTYwODI0Y2VjYjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNv
bgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsu
anNvbgpAQCAtMTU1LDcgKzE1NSwxMyBAQAogICAgICAgICAgICAgImlkIjogIk5ldHdvcmtTdGFn
ZSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKLSAgICAgICAg
ICAgICJlbnVtIjogWyJyZXNwb25zZSJdCisgICAgICAgICAgICAiZW51bSI6IFsicmVxdWVzdCIs
ICJyZXNwb25zZSJdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJS
ZXNvdXJjZUVycm9yVHlwZSIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVl
c3QuIiwKKyAgICAgICAgICAgICJlbnVtIjogWyJHZW5lcmFsIiwgIkFjY2Vzc0NvbnRyb2wiLCAi
Q2FuY2VsbGF0aW9uIiwgIlRpbWVvdXQiXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFu
ZHMiOiBbCkBAIC0yNDQsMTAgKzI1MCwxMCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkFkZCBhbiBpbnRlcmNlcHRpb24uIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBlcyI6IFsicGFn
ZSJdLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVVJMIHBhdHRlcm4gdG8g
aW50ZXJjZXB0LCBpbnRlcmNlcHQgZXZlcnl0aGluZyBpZiBub3Qgc3BlY2lmaWVkIG9yIGVtcHR5
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3Jr
U3RhZ2UiLCAiZGVzY3JpcHRpb24iOiAiU3RhZ2UgdG8gaW50ZXJjZXB0LiIgfSwKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImNhc2VTZW5zaXRpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBj
YXNpbmcgb2YgYHVybGAgcGFyYW1ldGVyLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJl
c3Npb24uIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJO
ZXR3b3JrU3RhZ2UiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHBy
ZXNlbnQgdGhpcyBhcHBsaWVzIHRvIGFsbCBuZXR3b3JrIHN0YWdlcy4iIH0KKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMg
YSByZWd1bGFyIGV4cHJlc3Npb24uIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAg
ICAgIHsKQEAgLTI1NiwxNyArMjYyLDI5IEBACiAgICAgICAgICAgICAidGFyZ2V0VHlwZXMiOiBb
InBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAiZGVzY3JpcHRpb24iOiAiU3Rh
Z2UgdG8gaW50ZXJjZXB0LiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhc2VTZW5z
aXRpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBjYXNpbmcgb2YgYHVybGAgcGFyYW1ldGVyLiIg
fSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFu
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJs
YCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIiB9LAotICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHByZXNlbnQgdGhpcyBhcHBsaWVzIHRvIGFsbCBu
ZXR3b3JrIHN0YWdlcy4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAi
dHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRy
dWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjog
ImludGVyY2VwdENvbnRpbnVlIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb250aW51
ZSBhbiBpbnRlcmNlcHRpb24gd2l0aCBubyBtb2RpZmljYXRpb25zLiIsCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ29udGludWUgcmVxdWVzdCBvciByZXNwb25zZSB3aXRob3V0IG1vZGlm
aWNhdGlvbnMuIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBlcyI6IFsicGFnZSJdLAogICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0
SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3Ig
dGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51ZS4i
IH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVl
c3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0
d29yayByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9u
IjogIlN0YWdlIHRvIGNvbnRpbnVlLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRXaXRoUmVxdWVzdCIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVwbGFjZSBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGgg
dGhlIHByb3ZpZGVkIG9uZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVz
Y3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVz
dCBvciByZXNwb25zZSB0byBjb250aW51ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCJkZXNjcmlwdGlv
biI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InVybCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsImRlc2NyaXB0aW9uIjog
IkhUVFAgcmVxdWVzdCB1cmwuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVy
cyIsICIkcmVmIjogIkhlYWRlcnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
SFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVu
bW9kaWZpZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG9zdERhdGEiLCAidHlw
ZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCBQT1NU
IHJlcXVlc3QgZGF0YSwgYmFzZTY0LWVuY29kZWQuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAg
IH0sCiAgICAgICAgIHsKQEAgLTI4Miw2ICszMDAsMjcgQEAKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInN0YXR1c1RleHQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgdGV4dC4gUGFzcyB0aHJvdWdoIG9y
aWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZh
bHVlcyBpZiB1bm1vZGlmaWVkLiIgfQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm92aWRlIHJlc3BvbnNlIGZvciBhbiBpbnRl
cmNlcHRlZCByZXF1ZXN0LiBSZXF1ZXN0IGNvbXBsZXRlbHkgYnlwYXNzZXMgdGhlIG5ldHdvcmsg
aW4gdGhpcyBjYXNlIGFuZCBpcyBpbW1lZGlhdGVseSBmdWxmaWxsZWQgd2l0aCB0aGUgcHJvdmlk
ZWQgZGF0YS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24i
OiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVzcG9uc2UgdG8gbW9k
aWZ5LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJz
dHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJiYXNlNjRFbmNvZGVkIiwgInR5
cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUcnVlLCBpZiBjb250ZW50IHdhcyBzZW50
IGFzIGJhc2U2NC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtaW1lVHlwZSIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJNSU1FIFR5cGUgZm9yIHRoZSBkYXRhLiIg
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1cyIsICJ0eXBlIjogImludGVnZXIi
LCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZS4iIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2Ny
aXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVzIHRleHQuIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMiLCAiZGVzY3JpcHRpb24iOiAi
SFRUUCByZXNwb25zZSBoZWFkZXJzLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGYWlsIHJlcXVlc3Qgd2l0aCBnaXZlbiBlcnJv
ciB0eXBlLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6
ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXF1ZXN0IHRvIGZhaWwu
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JUeXBlIiwgIiRyZWYiOiAiUmVz
b3VyY2VFcnJvclR5cGUiLCAiZGVzY3JpcHRpb24iOiAiRGVsaXZlciBlcnJvciByZWFzb24gZm9y
IHRoZSByZXF1ZXN0IGZhaWx1cmUuIiB9CisgICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICBd
LAogICAgICJldmVudHMiOiBbCkBAIC0zNTcsOSArMzk2LDE3IEBACiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJyZXNvdXJjZSIsICIkcmVmIjogIkNhY2hlZFJlc291cmNlIiwgImRlc2NyaXB0
aW9uIjogIkNhY2hlZCByZXNvdXJjZSBkYXRhLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0SW50ZXJjZXB0ZWQiLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXF1ZXN0IGhhcyBi
ZWVuIGludGVyY2VwdGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25kIHdpdGggPGNvZGU+TmV0
d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4sIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3Q8L2NvZGU+YCBvciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZTwv
Y29kZT5gIHRvIHJlc29sdmUgdGhpcyByZXF1ZXN0LiIsCisgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJl
cXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVk
IG5ldHdvcmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVl
c3RXaWxsQmVTZW50PC9jb2RlPi4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0IiwgIiRyZWYiOiAiUmVxdWVzdCIsICJkZXNjcmlwdGlvbiI6ICJPcmlnaW5hbCByZXF1ZXN0
IGNvbnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMgY29udGludWVkLiIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJy
ZXNwb25zZUludGVyY2VwdGVkIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3
aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0
IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4gb3Ig
PGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uczwvY29kZT5gIHRvIGNvbnRpbnVlIHRo
aXMgcmVzcG9uc2UuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhU
VFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0IHJlc3Bv
bnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4gb3IgPGNvZGU+
TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJl
c3BvbnNlLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwKICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElk
IiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRo
aXMgaW50ZXJjZXB0ZWQgbmV0d29yay4gQ29ycmVzcG9uZHMgd2l0aCBhbiBlYXJsaWVyIDxjb2Rl
Pk5ldHdvcmsucmVxdWVzdFdpbGxCZVNlbnQ8L2NvZGU+LiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYjBk
NzY2NGEwYTBiNjA0OTI0MDllZDU5YWEzMDkyMzY3ZjZkZGE2OC4uMGYwZjJhMTM2ZWNjM2RkNTQ2
ODkzZGNhYzk1MDMyOWQ2MjFiNmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTgxMiwxMCArODEyLDE3IEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
SW1wbChDYWNoZWRSZXNvdXJjZSYgY2FjCiAgICAgfQogfQogCi1ib29sIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jv
b2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCi0gICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQt
PndpbGxJbnRlcmNlcHRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm4gbmV0d29ya0Fn
ZW50LT53aWxsSW50ZXJjZXB0KHJlcXVlc3QpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgcmV0dXJuIG5ldHdv
cmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTgyNiw2ICs4MzMsMTIgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAg
bmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7
Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYzdiNjZiYTEx
NTVkOTFiM2M1ZTBlMzEyZTE0YmQyZmU3MzI4NmQyNS4uZGY5MzkwNWI0NWJhZTRjNzRhNzFkMWVh
ZTg5YzEyNWUwMTgzYTIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkhp
dFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWMu
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNs
dWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUg
Ildvcmtlckluc3BlY3RvclByb3h5LmgiCkBAIC0yMzQsOCArMjM1LDEwIEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZy
YW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgd2lsbEludGVy
Y2VwdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRv
Q29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KTsKQEAgLTQ0Miw4ICs0NDUsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyB2b2lk
IHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJik7CiAKLSAgICBz
dGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC0xMjU3LDExICsxMjYyLDE5IEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYKICAgICB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1w
bChjYWNoZWRSZXNvdXJjZSk7CiB9CiAKLWlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxJbnRlcmNlcHQoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsK
ICAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOworICAgICAgICByZXR1cm4gd2lsbEludGVy
Y2VwdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQoreworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWM6Omhh
c0Zyb250ZW5kcygpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiBzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC0xMjczLDYgKzEyODYsMTMgQEAgaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYg
ZnJhbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7
CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVx
dWVzdCgqbG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpZiAoYXV0byog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShsb2FkZXIu
ZnJhbWUoKSkpCisgICAgICAgIGludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDk1NGFhZjEyMWE5ZmE1MDdkODNiYzEwYWUzN2RlMWYx
MjhmN2RjZmMuLmUzOGVmMzk4ZTdlOWFmYzFlMDFhNTRiOWNlNjhmYzIzNTk4ZTkxNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuY3BwCkBAIC0zMCwxMSArMzAsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJj
ZXB0UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNo
b3VsZEludGVyY2VwdFJlcXVlc3QoZnJhbWUsIHJlcXVlc3QpOworfQorCiBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChj
b25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewog
ICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3Bv
bnNlKGZyYW1lLCByZXNwb25zZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVy
KQoreworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2Fk
ZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBiNjdlODliODBiNGU3YTg1ODZjYWM4
MWFkZTVkNThhMWJjYjBkNDMxLi5hMzJmODc3ZWFhMDRmMjdkMTIxMjcwY2ZmNWFjYzNiMDMyYzFj
NmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwxNCArMzYsMjcgQEAgY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQgewogcHVibGljOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAgICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwog
CiBwcml2YXRlOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5h
bChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEludGVybmFs
KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZy
YW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFsKCpmcmFt
ZSwgcmVxdWVzdCk7Cit9CisKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoZmFsc2UpOwpAQCAtNTMsNiArNjYsMTIgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSoK
ICAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3Bv
bnNlKTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Ojpp
bnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGxv
YWRlci5mcmFtZSgpLCBsb2FkZXIucmVxdWVzdCgpKSk7CisgICAgaW50ZXJjZXB0UmVxdWVzdElu
dGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUq
IGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBhZmNkZDJhN2ZhZmZlMGJlYzk4MjA3
MmQ4OTRiYzg1YzZlMzBjNDRjLi40NTk0MjlmM2Y1YzY5MDc1ZDU0ZDgxMDhlNTZjODY1OTViZjlh
ZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAu
aCIKQEAgLTQ2Niw2ICs0NjcsNyBAQCBzdGF0aWMgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlRm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzbwogewogICAgIGlm
IChyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6aW5zcGVjdG9y
UmVzb3VyY2VUeXBlKCpyZXNvdXJjZSk7CisKICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50
OjpPdGhlclJlc291cmNlOwogfQogCkBAIC04NDEsMTIgKzg0MywxMyBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9yZXNvdXJjZXNEYXRh
LT5jbGVhcigpOwogICAgIG1fZXh0cmFSZXF1ZXN0SGVhZGVycy5jbGVhcigpOwogCisgICAgY29u
dGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsK
IAogICAgIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGZhbHNlKTsKIH0KIAotYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQorYm9vbCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsLCBOZXR3b3JrU3RhZ2UgbmV0
d29ya1N0YWdlKQogewogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAt
ODU1LDYgKzg1OCwxMSBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJj
ZXB0KFVSTCB1cmwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgaW50
ZXJjZXB0IDogbV9pbnRlcmNlcHRzKSB7CisgICAgICAgIGlmIChpbnRlcmNlcHQubmV0d29ya1N0
YWdlICE9IG5ldHdvcmtTdGFnZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
aW50ZXJjZXB0LnVybC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAg
ICAgICBhdXRvIHNlYXJjaFN0cmluZ1R5cGUgPSBpbnRlcmNlcHQuaXNSZWdleCA/IENvbnRlbnRT
ZWFyY2hVdGlsaXRpZXM6OlNlYXJjaFN0cmluZ1R5cGU6OlJlZ2V4IDogQ29udGVudFNlYXJjaFV0
aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6RXhhY3RTdHJpbmc7CiAgICAgICAgIGF1dG8gcmVn
ZXggPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpjcmVhdGVSZWd1bGFyRXhwcmVzc2lvbkZvclNl
YXJjaFN0cmluZyhpbnRlcmNlcHQudXJsLCBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSwgc2VhcmNo
U3RyaW5nVHlwZSk7CiAgICAgICAgIGlmIChyZWdleC5tYXRjaCh1cmxTdHJpbmcpICE9IC0xKQpA
QCAtODY0LDYgKzg3MiwxMyBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50
ZXJjZXB0KFVSTCB1cmwpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMoKQoreworICAgIGZvciAoYXV0byYg
cGVuZGluZ1JlcXVlc3QgOiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy52YWx1ZXMoKSkKKyAg
ICAgICAgcGVuZGluZ1JlcXVlc3QtPmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCgpOworICAg
IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLmNsZWFyKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKQogewogICAgIGZvciAoYXV0
byYgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlIDogbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2Vz
LnZhbHVlcygpKQpAQCAtMTAyOSwxOCArMTA0NCwxOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJv
bwogCiAgICAgbV9pbnRlcmNlcHRpb25FbmFibGVkID0gZW5hYmxlZDsKIAotICAgIGlmICghbV9p
bnRlcmNlcHRpb25FbmFibGVkKQorICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKSB7Cisg
ICAgICAgIGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgICAgIGNvbnRpbnVlUGVuZGlu
Z1Jlc3BvbnNlcygpOworICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFk
ZEludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
SXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpCit2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25z
dCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdl
eCkKIHsKLSAgICBpZiAobmV0d29ya1N0YWdlU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0d29y
a1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFn
ZT4oKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7Ci0g
ICAgICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdl
OiAiX3MsICpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0
b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6
TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0
d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBu
ZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIEludGVyY2VwdCBpbnRlcmNlcHQ7CkBAIC0xMDQ5LDIxICsxMDY0LDE4IEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAgICAgICAgIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZl
ID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0aW9uYWxJc1JlZ2V4KQogICAg
ICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElzUmVnZXg7Ci0KLSAgICAvLyBGSVhN
RTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisgICAgaW50ZXJjZXB0Lm5ldHdvcmtT
dGFnZSA9IG5ldHdvcmtTdGFnZS52YWx1ZSgpOwogCiAgICAgaWYgKCFtX2ludGVyY2VwdHMuYXBw
ZW5kSWZOb3RDb250YWlucyhpbnRlcmNlcHQpKQotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRl
cmNlcHQgZm9yIGdpdmVuIHVybCBhbmQgZ2l2ZW4gaXNSZWdleCBhbHJlYWR5IGV4aXN0cyJfczsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJjZXB0IGZvciBnaXZlbiB1cmwsIGdpdmVuIGlz
UmVnZXgsIGFuZCBnaXZlbiBzdGFnZSBhbHJlYWR5IGV4aXN0cyJfczsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3Rh
Z2VTdHJpbmcpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9u
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKIHsKLSAgICBpZiAobmV0d29ya1N0YWdlU3Ry
aW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAg
ICAgIGlmICghbmV0d29ya1N0YWdlKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VT
dHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpuZXR3b3JrU3RhZ2VTdHJpbmcpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3b3Jr
U3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0YWdl
U3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVyY2VwdCBpbnRlcmNl
cHQ7CkBAIC0xMDcyLDE5ICsxMDg0LDI3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpy
ZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTCiAgICAg
ICAgIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAg
ICBpZiAob3B0aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRp
b25hbElzUmVnZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVz
dHMuCisgICAgaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9IG5ldHdvcmtTdGFnZS52YWx1ZSgpOwog
CiAgICAgaWYgKCFtX2ludGVyY2VwdHMucmVtb3ZlQWxsKGludGVyY2VwdCkpCi0gICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlz
UmVnZXgiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBn
aXZlbiB1cmwsIGdpdmVuIGlzUmVnZXgsIGFuZCBnaXZlbiBzdGFnZSBhbHJlYWR5IGV4aXN0cyJf
czsKK30KKworYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFi
bGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0
KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCkKKyAgICAgICAgfHwgc2hvdWxk
SW50ZXJjZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UpOwogfQogCi1i
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCkpOworICAgIHJldHVybiBzaG91
bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTA5Miw3ICsxMTEyLDIxIEBAIGJvb2wg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwCiAgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVzcG9uc2Uu
dXJsKCkpOworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVzcG9uc2UudXJsKCksIE5ldHdv
cmtTdGFnZTo6UmVzcG9uc2UpOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7CisgICAgQVNTRVJUKG1f
ZW5hYmxlZCk7CisgICAgQVNTRVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CisKKyAgICBTdHJp
bmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQobG9hZGVyLmlkZW50
aWZpZXIoKSk7CisgICAgaWYgKG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLmNvbnRhaW5zKHJl
cXVlc3RJZCkpIHsKKyAgICAgICAgaGFuZGxlcihsb2FkZXIucmVxdWVzdCgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5zZXQocmVxdWVz
dElkLCBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0PigmbG9hZGVyLCBXVEZNb3Zl
KGhhbmRsZXIpKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRl
ZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0
KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQpAQCAtMTExMiwxNSArMTE0Niw2MyBAQCB2b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlSW50
ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9u
c2UsIG51bGxwdHIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2Vw
dENvbnRpbnVlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBuZXR3b3JrU3RhZ2VTdHJpbmcpCiB7Ci0gICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9u
c2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwotICAgIGlm
ICghcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsK
KyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3Rvckhl
bHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3Jr
U3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdv
cmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgc3dpdGNoIChuZXR3b3JrU3RhZ2UudmFsdWUoKSkgeworICAgIGNhc2UgTmV0d29y
a1N0YWdlOjpSZXF1ZXN0OgorICAgICAgICBpZiAoYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVxdWVz
dCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKSkKKyAgICAgICAg
ICAgIHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0LT5jb250aW51ZVdpdGhPcmlnaW5hbFJlcXVlc3Qo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5k
aW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2U6CisgICAgICAgIGlmIChhdXRv
IHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50
YWtlKHJlcXVlc3RJZCkpCisgICAgICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJl
c3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZvciBnaXZl
biByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRo
UmVxdWVzdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcqIG1ldGhvZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpTT046Ok9i
amVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkKK3sKKyAgICBhdXRvIHBlbmRp
bmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOwor
ICAgIGlmIChwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVy
ID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOworICAgICAgICBpZiAodXJsKQorICAgICAg
ICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgKnVybCkpOworICAgICAgICBpZiAobWV0aG9k
KQorICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCptZXRob2QpOworICAgICAgICBp
ZiAoaGVhZGVycykgeworICAgICAgICAgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6ICpoZWFkZXJzKSB7CisgICAg
ICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICAgICAgICAgIGlmICh2YWx1
ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBleHBsaWNpdEhl
YWRlcnMuYWRkKGtleSwgaGVhZGVyVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHBvc3REYXRhKSB7CisgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOworICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKnBvc3REYXRhLCBi
dWZmZXIpKSB7CisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRlY29k
ZSBnaXZlbiBwb3N0RGF0YSJfczsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoYnVm
ZmVyKSk7CisgICAgICAgIH0KKyAgICAgICAgcGVuZGluZ1JlcXVlc3QtPmNvbnRpbnVlV2l0aFJl
cXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVx
dWVzdElkIl9zOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0
aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJp
bmcqIG1pbWVUeXBlLCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0
LCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMpCkBAIC0xMTU5LDYgKzEyNDEsNyBAQCB2b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29ucwogICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
LT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQorCiAgICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQudXRmOCgpLmRhdGEoKSwgY29udGVudC51dGY4KCkubGVu
Z3RoKCkpOwpAQCAtMTE2Niw2ICsxMjQ5LDkyIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAg
ICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kKG92ZXJyaWRlUmVzcG9uc2UsIG92
ZXJyaWRlRGF0YSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1Rl
eHQsIGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1
ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlm
ICghcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5k
aW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHBlbmRp
bmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICBpZiAoIWxvYWRlci0+aWRlbnRpZmllcigp
KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0
IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBpZiAoYmFzZTY0RW5jb2RlZCkg
eworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICBpZiAoIWJhc2U2NERl
Y29kZShjb250ZW50LCBidWZmZXIpKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFi
bGUgdG8gZGVjb2RlIGdpdmVuIGNvbnRlbnQiX3M7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250
ZW50LnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQudXRmOCgpLmxlbmd0aCgpKTsKKworICAgIC8vIE1p
bWljIGRhdGEgVVJMIGxvYWQgYmVoYXZpb3IgLSByZXBvcnQgZGlkUmVjZWl2ZVJlc3BvbnNlICYg
ZGlkRmluaXNoTG9hZGluZy4KKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHBlbmRpbmdS
ZXF1ZXN0LT5tX2xvYWRlci0+dXJsKCksIG1pbWVUeXBlLCBkYXRhLT5zaXplKCksIFN0cmluZygp
KTsKKyAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpJbnNw
ZWN0b3JPdmVycmlkZSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsK
KyAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNUZXh0KTsKKyAgICBIVFRQSGVh
ZGVyTWFwIGV4cGxpY2l0SGVhZGVyczsKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhlYWRlcnMp
IHsKKyAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICBpZiAoaGVhZGVyLnZhbHVl
LT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRk
KGhlYWRlci5rZXksIGhlYWRlclZhbHVlKTsKKyAgICB9CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhl
YWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAgIHJlc3BvbnNlLnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVU
eXBlKCkpOworICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVy
LCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
IChidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihX
VEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2Up
OworICAgICAgICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkp
OworICAgIH0pOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVx
dWVzdFdpdGhFcnJvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZVN0cmluZykKK3sKKyAgICBhdXRvIHBlbmRp
bmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOwor
ICAgIGlmICghcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2lu
ZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcGVuZGlu
Z1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkp
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGFib3J0IHJlcXVlc3QsIGl0IGhh
cyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJz
OjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6
UmVzb3VyY2VFcnJvclR5cGU+KGVycm9yVHlwZVN0cmluZyk7CisgICAgaWYgKCFlcnJvclR5cGUp
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGVycm9yVHlwZTog
Il9zLCBlcnJvclR5cGVTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKKyAgICBzd2l0Y2ggKGVycm9yVHlwZS52YWx1ZSgpKSB7CisgICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6R2Vu
ZXJhbDoKKyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNvdXJj
ZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNzQ29udHJvbDoK
KyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIGxvYWRlci0+dXJsKCksICJBY2Nlc3MgZGVuaWVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpBY2Nlc3NDb250cm9sKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6Q2FuY2VsbGF0aW9uOgorICAgICAg
ICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9h
ZGVyLT51cmwoKSwgIlJlcXVlc3QgY2FuY2VsZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNh
bmNlbGxhdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OlRpbWVvdXQ6CisgICAgICAgIGVycm9yID0g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgp
LCAiUmVxdWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsb2FkZXItPmRpZEZhaWwoZXJyb3IpOwor
fQorCiBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikKQEAgLTExODIsNiArMTM1MSw3IEBAIFJlZjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNv
ZGVyKGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1F
VHlwZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUobWltZVR5cGUsICJVVEYtOCIpOworCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1M
TUlNRVR5cGUobWltZVR5cGUpKSB7CiAgICAgICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIl9zKTsKICAgICAgICAgZGVjb2Rlci0+
dXNlTGVuaWVudFhNTERlY29kaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBiZmQxMzFlOWI1ODU2
Yzg0ZGE3NzI0ODA1ZTcxMzk3YjdjNzQ4NmE5Li5iNDI1OWI2OTk1MDFlMDBlYjVlMzRhYmRhZTNl
M2Y5OGNlMDkyZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTg4LDEwICs4OCwxMyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBzZXJpYWxpemVkQ2VydGlmaWNhdGUpIGZpbmFsOwog
ICAgIHZvaWQgcmVzb2x2ZVdlYlNvY2tldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIGZpbmFsOwogICAgIHZvaWQgc2V0SW50ZXJj
ZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgZmluYWw7Ci0gICAgdm9p
ZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
Ym9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgY29uc3QgU3RyaW5nKiBu
ZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlSW50ZXJjZXB0aW9uKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKSBm
aW5hbDsKLSAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQpIGZpbmFsOworICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5n
LCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4KSBmaW5hbDsK
KyAgICB2b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCogY2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCkgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRD
b250aW51ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVx
dWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcq
IG1ldGhvZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycywg
Y29uc3QgU3RyaW5nKiBwb3N0RGF0YSkgZmluYWw7CiAgICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVz
cG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNv
bnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9i
amVjdCogaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYg
Y29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQg
c3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCYgaGVh
ZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKSBm
aW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgd2lsbFJl
Y2FsY3VsYXRlU3R5bGUoKTsKQEAgLTExOCw5ICsxMjEsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
bWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyJik7CiAgICAgdm9pZCBzZXRJbml0aWFs
U2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3Vt
ZW50Jik7Ci0gICAgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKKyAgICBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
ICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lkIGludGVy
Y2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhj
b25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKICAgICB2b2lkIHNl
YXJjaEluUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCwgUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+Jik7CkBAIC0xNDAsNyArMTQ1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAKLSAgICBib29sIHNob3VsZEludGVy
Y2VwdChVUkwpOworICAgIHVzaW5nIE5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZTsKKyAgICBib29sIHNob3VsZEludGVyY2VwdChVUkwsIE5l
dHdvcmtTdGFnZSk7CisgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIHZv
aWQgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAKICAgICBXZWJTb2NrZXQqIHdlYlNvY2tl
dEZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CkBAIC0xNTMsNiArMTYwLDMx
IEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAKKyAgICBjbGFzcyBQZW5k
aW5nSW50ZXJjZXB0UmVxdWVzdCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRp
bmdJbnRlcmNlcHRSZXF1ZXN0KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgcHVibGljOgorICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdChSZWZQdHI8UmVzb3Vy
Y2VMb2FkZXI+IGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIDogbV9sb2FkZXIobG9h
ZGVyKQorICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKQorICAgICAgICB7IH0KKworICAgICAgICB2b2lkIGNvbnRpbnVlV2l0aE9yaWdp
bmFsUmVxdWVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9sb2FkZXItPnJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlciht
X2xvYWRlci0+cmVxdWVzdCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY29udGludWVX
aXRoUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIocmVxdWVzdCk7CisgICAgICAgIH0KKworICAg
ICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCgpID0gZGVmYXVsdDsKKyAgICAgICAgUmVmUHRy
PFJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICB9Owor
CiAgICAgY2xhc3MgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlIHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKTsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC0yMDQsMTUgKzIzNiwxOCBAQCBwcml2YXRlOgogICAgICAgICBT
dHJpbmcgdXJsOwogICAgICAgICBib29sIGNhc2VTZW5zaXRpdmUgeyB0cnVlIH07CiAgICAgICAg
IGJvb2wgaXNSZWdleCB7IGZhbHNlIH07CisgICAgICAgIE5ldHdvcmtTdGFnZSBuZXR3b3JrU3Rh
Z2UgeyBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlIH07CiAKICAgICAgICAgaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJbnRlcmNlcHQmIG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gdXJsID09IG90aGVyLnVybAogICAgICAgICAgICAgICAgICYmIGNhc2VTZW5z
aXRpdmUgPT0gb3RoZXIuY2FzZVNlbnNpdGl2ZQotICAgICAgICAgICAgICAgICYmIGlzUmVnZXgg
PT0gb3RoZXIuaXNSZWdleDsKKyAgICAgICAgICAgICAgICAmJiBpc1JlZ2V4ID09IG90aGVyLmlz
UmVnZXgKKyAgICAgICAgICAgICAgICAmJiBuZXR3b3JrU3RhZ2UgPT0gb3RoZXIubmV0d29ya1N0
YWdlOwogICAgICAgICB9CiAgICAgfTsKICAgICBWZWN0b3I8SW50ZXJjZXB0PiBtX2ludGVyY2Vw
dHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0
UmVxdWVzdD4+IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlPj4gbV9wZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2VzOwogCiAgICAgLy8gRklYTUU6IEluc3BlY3Rvck5ldHdvcmtBZ2VudCBz
aG91bGQgbm90IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCAy
MzFlZGVjOGNjYzcxZDY1MjE3MTA2MzYzZjVjYzM0OTkwYTE2NDdlLi42NTllMmZlODkwN2IzMTU5
NzY2MGE3ZGRjNDhiOTQ1ZDMzZjBmNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg0Niw3ICs4NDYsNyBAQCBS
ZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQogCiAgICAgcmVxdWVzdC51cGRhdGVSZWZlcnJlclBvbGlj
eShkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA6IFJlZmVycmVyUG9s
aWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdCgmZnJhbWUsIHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHQoJmZyYW1lLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmVxdWVzdC5z
ZXRDYWNoaW5nUG9saWN5KENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZyk7CiAKICAgICBh
dXRvJiBwYWdlID0gKmZyYW1lLnBhZ2UoKTsKQEAgLTE0MzYsNyArMTQzNiw3IEBAIFZlY3RvcjxS
ZWY8U1ZHSW1hZ2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsQ2FjaGVkU1ZHSW1hZ2VzKCkg
Y29uc3QKIAogUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICBpZiAoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChmcmFtZSgpLCByZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW50ZXJjZXB0KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQogICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksICJJbnNwZWN0b3Ig
aW50ZXJjZXB0Il9zIH0pOwogCiAgICAgaWYgKHJlcXVlc3QuY2hhcnNldCgpLmlzRW1wdHkoKSAm
JiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0IHx8IHR5cGUgPT0gQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFu
YWdlci5qcwppbmRleCA5Mzc2MzQ5YjlkYWJhMTAyMzNiYTAxYmQ3NjQ4YWYwNzlhYTJhMGY1Li4y
NDg5ODRiMGY3NjBhMThkMzQ4ZGZjMDJkMGRlNjU5ZjJkODU5ZjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9OZXR3b3JrTWFuYWdlci5qcwpAQCAtMTU5LDkgKzE1OSw5IEBAIFdJLk5ldHdvcmtNYW5hZ2Vy
ID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUuZGlzYWJsZWQpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUu
dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5k
LkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNp
dGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNl
T3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU3Rh
Z2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMzY0LDcgKzM2NCw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xh
c3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB1cmw6
IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2
ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgICAg
ICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAgICAg
ICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFn
ZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVt
Lk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsKIAogICAgICAg
ICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLmFkZEludGVyY2VwdGlv
biBkaWQgbm90IGV4aXN0LgpAQCAtMzk3LDcgKzM5Nyw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0g
Y2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB1
cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2FzZVNlbnNp
dGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAg
ICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAg
ICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsKIAogICAg
ICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLnJlbW92ZUludGVy
Y2VwdGlvbiBkaWQgbm90IGV4aXN0LgpAQCAtOTA2LDEyICs5MDYsMjEgQEAgV0kuTmV0d29ya01h
bmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0
aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmRlbGV0ZShyZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgfQogCisgICAgcmVxdWVzdEludGVyY2VwdGVkKHRhcmdldCwgcmVxdWVzdElkLCBy
ZXF1ZXN0KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGFkZCByZXF1ZXN0IGludGVyY2VwdGlv
biBzdXBwb3J0IHRvIHRoZSBmcm9udGVuZC4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCB7dGFy
Z2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9KTsKKyAgICB9CisKICAgICByZXNwb25zZUludGVyY2Vw
dGVkKHRhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSkKICAgICB7CiAgICAgICAgIGxldCB1cmwg
PSBXSS51cmxXaXRob3V0RnJhZ21lbnQocmVzcG9uc2UudXJsKTsKICAgICAgICAgbGV0IGxvY2Fs
UmVzb3VyY2VPdmVycmlkZSA9IHRoaXMubG9jYWxSZXNvdXJjZU92ZXJyaWRlRm9yVVJMKHVybCk7
CiAgICAgICAgIGlmICghbG9jYWxSZXNvdXJjZU92ZXJyaWRlIHx8IGxvY2FsUmVzb3VyY2VPdmVy
cmlkZS5kaXNhYmxlZCkgewotICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNl
cHRDb250aW51ZShyZXF1ZXN0SWQpOworICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAg
ICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMTM3Nyw3ICsxMzg2LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFz
cyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdXJsOiBsb2Nh
bFJlc291cmNlT3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxS
ZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgIGlzUmVnZXg6IGxv
Y2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgbmV0d29ya1N0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAg
ICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdl
LlJlc3BvbnNlLAogICAgICAgICB9OwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAx
My4wKTogTmV0d29yay5hZGRJbnRlcmNlcHRpb24gLyBOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlv
biBkaWQgbm90IGV4aXN0LgpAQCAtMTQzMyw0ICsxNDQyLDUgQEAgV0kuTmV0d29ya01hbmFnZXIu
RXZlbnQgPSB7CiAgICAgQm9vdHN0cmFwU2NyaXB0RGVzdHJveWVkOiAibmV0d29yay1tYW5hZ2Vy
LWJvb3RzdHJhcC1zY3JpcHQtZGVzdHJveWVkIiwKICAgICBMb2NhbFJlc291cmNlT3ZlcnJpZGVB
ZGRlZDogIm5ldHdvcmstbWFuYWdlci1sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1hZGRlZCIsCiAg
ICAgTG9jYWxSZXNvdXJjZU92ZXJyaWRlUmVtb3ZlZDogIm5ldHdvcmstbWFuYWdlci1sb2NhbC1y
ZXNvdXJjZS1vdmVycmlkZS1yZW1vdmVkIiwKKyAgICBSZXF1ZXN0SW50ZXJjZXB0ZWQ6ICJuZXR3
b3JrLW1hbmFnZXItcmVxdWVzdC1pbnRlcmNlcHRlZCIKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2Jz
ZXJ2ZXIuanMKaW5kZXggNTljMjljOWEzODRiMDQ3OGRkOGQ2ZDBjZjU5MjhiNjI5ODE4MDBhYS4u
ZmU4ODI5YTcxYmZkMGVlZDg1NmI0MWMzYWFlY2U2YWU3ZjFhMTRkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05l
dHdvcmtPYnNlcnZlci5qcwpAQCAtMTA4LDYgKzEwOCwxMSBAQCBXSS5OZXR3b3JrT2JzZXJ2ZXIg
PSBjbGFzcyBOZXR3b3JrT2JzZXJ2ZXIgZXh0ZW5kcyBJbnNwZWN0b3JCYWNrZW5kLkRpc3BhdGNo
ZXIKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KICAgICB9CiAKKyAgICByZXF1
ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgV0kubmV0
d29ya01hbmFnZXIucmVxdWVzdEludGVyY2VwdGVkKHRoaXMuX3RhcmdldCwgcmVxdWVzdElkLCBy
ZXF1ZXN0KTsKKyAgICB9CisKICAgICByZXNwb25zZUludGVyY2VwdGVkKHJlcXVlc3RJZCwgcmVz
cG9uc2UpCiAgICAgewogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNwb25zZUludGVyY2Vw
dGVkKHRoaXMuX3RhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXgg
MDNlYmQ4OTQ0YWExYjliY2JjZWVjYmQ1ZmRkMTYxOWM1YWNhOGRhYy4uZmJmZjExOGE3ZGI2MjJj
NGQwODc3NTBlNGZkNjQzMmY3ZjM0ZGNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNTgsNiArNTgsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVsZW1lbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3Ry
YXRlZ2llcy5oPgpAQCAtMjMwLDggKzIzMSwxNCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
Y2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQog
CiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVy
LCB0cmFja2luZ1BhcmFtZXRlcnMpKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHdp
dGggdGhlIE5ldHdvcmtQcm9jZXNzIik7CisKKyAgICAgICAgaWYgKCFyZXNvdXJjZUxvYWRlci5v
cHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgJiYgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9h
ZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKKyAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChyZXNvdXJjZUxv
YWRlciwgW3RoaXMsIHByb3RlY3RlZFJlc291cmNlTG9hZGVyID0gbWFrZVJlZlB0cigmcmVzb3Vy
Y2VMb2FkZXIpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIHJlc291cmNlXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
IHsKKyAgICAgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoKnByb3Rl
Y3RlZFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJl
c291cmNlKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIs
IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNv
dXJjZSkpOwotICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV0VCTE9BREVSU1RSQVRFR1lf
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkg
YW55IGhhbmRsZXJzIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjljOWNhYTAzNzA4MGNjMmQ1ZjFjYjZkNTQ3YzE2YjVk
ZGE1NWNjYS4uNzFhMWNkNTNjMmMxYjM3MjJkMDM4ZGNlMjY5NTZiY2JmNjE0Njc5NiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQwIEBACisyMDIwLTA2LTAzICBQYXZlbCAgPHBhdmVsLmZlbGRtYW5AZ21haWwu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2Vw
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBO
ZXR3b3JrCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3JrLmludGVyY2Vw
dFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBiZSBjb250aW51ZWQs
IG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2FuIG5vdyBoYXZlCisg
ICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtY29udGludWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1y
ZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVz
b3VyY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9w
ZXJ0aWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtZXJyb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3Vi
cmVzb3VyY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC13aXRoLXJlc3BvbnNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVl
c3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlw
dC5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3By
b3RvY29sLXRlc3QuanM6CisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3Vy
Y2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uOiBBZGRlZC4KKwogMjAyMC0w
Ni0wMyAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIERpc2FsbG93IHJl
c3BvbnNlcyB3aGVuIGEgcmVzcG9uc2UgY29udGFpbnMgaW52YWxpZCBoZWFkZXIgdmFsdWVzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1hYm9ydGVkLXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NDBmMjBjYjZjMTQ2YTczZjJmYWMwYzM3NDhiY2Y2YzhlNTRmMjUxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBA
CitBTEVSVDogREVGQVVMVCBvdmVycmlkZS5qcyBURVhUCitDT05TT0xFIE1FU1NBR0U6IFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbjogQWJvcnRFcnJvcjogRmV0Y2ggaXMgYWJvcnRlZAorQ09O
U09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IEFib3J0RXJyb3I6IEZl
dGNoIGlzIGFib3J0ZWQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gb2YgdGhlIGFib3J0ZWQg
cmVxdWVzdC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkFib3J0ZWQK
K1RyaWdnZXJpbmcgbG9hZC4uLgorUmVjZWl2ZWQgZXJyb3I6IEVycm9yOiBVbmFibGUgdG8gZnVs
ZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZAorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yLkFib3J0ZWQKK1Ry
aWdnZXJpbmcgbG9hZC4uLgorUmVjZWl2ZWQgZXJyb3I6IEVycm9yOiBVbmFibGUgdG8gYWJvcnQg
cmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1y
ZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWYyNTA2MThjNzNhMDEw
YWUyMjkxZjhjZjA5MWI2NmU1MWI5Yjg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0
bWwKQEAgLTAsMCArMSwxMDEgQEAKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBmZXRjaEFu
ZEFib3J0KCkgeworICAgIGxldCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQiOworICAgIGxldCBjb250cm9sbGVyID0g
bmV3IEFib3J0Q29udHJvbGxlcigpOworICAgIGxldCB7IHNpZ25hbCB9ID0gY29udHJvbGxlcjsK
KyAgICBmZXRjaCh1cmwsIHsgc2lnbmFsIH0pOworICAgIGNvbnRyb2xsZXIuYWJvcnQoKTsKK30K
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5kZWJ1ZygpOworICAgIGxl
dCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlIik7CisgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFp
blRhcmdldCgpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAic2V0
VXAiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5l
dHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJy
aWRlLnR4dCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5O
ZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5BYm9ydGVkIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGZ1bGZpbGxzIGFib3J0ZWQg
cmVxdWVzdCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgY2FsbGJh
Y2s7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZVJlc3VsdCA9
IG5ldyBQcm9taXNlKGYgPT4gY2FsbGJhY2sgPSAgZik7CisgICAgICAgICAgICBsZXQgaW50ZXJj
ZXB0UmVxdWVzdFdpdGhSZXNwb25zZSA9IGFzeW5jIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgIGxldCB7IHRhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0IH0gPSBldmVudC5kYXRhOworICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3
b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5pbnZva2UoeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2U6
IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGVudDogIlBBU1MiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtaW1l
VHlwZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAyMDAs
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgV0kubmV0
d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1
ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAg
dGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0Y2hBbmRBYm9ydCgpIik7CisgICAgICAg
ICAgICBjb25zdCBlcnJvciA9IGF3YWl0IGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2VSZXN1
bHQ7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygnUmVjZWl2ZWQgZXJyb3I6ICcgKyBl
cnJvcik7CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJv
ci5BYm9ydGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2Vw
dGlvbiB0aGF0IHJlamVjdHMgYWJvcnRlZCByZXF1ZXN0IiwKKyAgICAgICAgYXN5bmMgdGVzdCgp
IHsKKyAgICAgICAgICAgIGxldCBjYWxsYmFjazsKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlUmVzdWx0ID0gbmV3IFByb21pc2UoZiA9PiBjYWxsYmFjayA9ICBm
KTsKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlID0gYXN5bmMg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1ZXN0SWQsIHJl
cXVlc3QgfSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVy
cm9yLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvclR5cGU6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3Jr
LlJlc291cmNlRXJyb3JUeXBlLkdlbmVyYWwsCisgICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgV0ku
bmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5S
ZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAg
ICAgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0Y2hBbmRBYm9ydCgpIik7CisgICAg
ICAgICAgICBjb25zdCBlcnJvciA9IGF3YWl0IGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2VS
ZXN1bHQ7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygnUmVjZWl2ZWQgZXJyb3I6ICcg
KyBlcnJvcik7CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0
UmVxdWVzdFdpdGhSZXNwb25zZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9mIHRoZSBhYm9y
dGVkIHJlcXVlc3QuPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVycmlkZS5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3QtY29udGludWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNmVmM2FlMjhhZThk
NjdiMTlkZGIxODYyMjU3ZTU0ZjBkNDA2NDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9u
IHRoYXQgY29udGludWVzIHJlcXVlc3QuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3
b3JrLmludGVyY2VwdENvbnRpbnVlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogc2V0VXAKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWUKK1RyaWdn
ZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgY29udGVudDoKK2Z1bmN0aW9uIG15U2NyaXB0SlMoKSB7
fQorCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29u
dGludWVXcm9uZ1N0YWdlCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlY2VpdmVkIGVycm9yOiBFcnJv
cjogTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElk
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGlu
dWVXcm9uZ0lkCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlY2VpdmVkIGVycm9yOiBFcnJvcjogTWlz
c2luZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNh
Y2NjOWI5MWZkMzE0ZmMyZmY4MmMyMTMxYTFjMDNkYWEzYmU1ZDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LWNvbnRpbnVlLmh0bWwKQEAgLTAsMCArMSwxMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0
aW9uIGZldGNoRGF0YSh1cmwpCit7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJs
KTsKKyAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UudGV4dCgpOworfQorCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5l
dHdvcmsuaW50ZXJjZXB0Q29udGludWUiKTsKKyAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdN
YWluVGFyZ2V0KCk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJz
ZXRVcCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQu
TmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVy
bDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc2Ny
aXB0LmpzIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5l
dHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0Q29udGludWUgPSAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICBsZXQgeyB0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdCB9ID0gZXZl
bnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENv
bnRpbnVlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKworICAg
ICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdENvbnRpbnVlKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAg
ICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuZXZhbHVhdGUoImZl
dGNoRGF0YSgncmVzb3VyY2VzL3NjcmlwdC5qcycpIik7CisgICAgICAgICAgICByZXNwb25zZSA9
IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuYXdhaXRQcm9taXNlKHJlc3BvbnNlLnJlc3VsdC5v
YmplY3RJZCwgdHJ1ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVzcG9uc2Ug
Y29udGVudDoiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKHJlc3BvbnNlLnJlc3Vs
dC52YWx1ZSk7CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0
Q29udGludWUpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWVXcm9uZ1N0
YWdlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0
aGF0IGNvbnRpbnVlcyB3aXRoIHRoZSB3cm9uZyBzdGFnZSIsCisgICAgICAgIGFzeW5jIHRlc3Qo
KSB7CisgICAgICAgICAgICBsZXQgY2FsbGJhY2s7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0
Q29udGludWVSZXN1bHQgPSBuZXcgUHJvbWlzZShmID0+IGNhbGxiYWNrID0gIGYpOworICAgICAg
ICAgICAgbGV0IGludGVyY2VwdENvbnRpbnVlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAg
ICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QgfSA9IGV2ZW50LmRhdGE7
CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgIGF3YWl0IHRhcmdldC5O
ZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJh
Y2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAg
ICB0YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlKCJmZXRjaERhdGEoJ3Jlc291cmNlcy9zY3Jp
cHQuanMnKSIpOworICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCBpbnRlcmNlcHRDb250
aW51ZVJlc3VsdDsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCdSZWNlaXZlZCBlcnJv
cjogJyArIGVycm9yKTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRl
cmNlcHRDb250aW51ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZVdy
b25nSWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaW50ZXJjZXB0aW9u
IHRoYXQgY29udGludWVzIHdpdGggdGhlIHdyb25nIHN0YWdlIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIGxldCBjYWxsYmFjazsKKyAgICAgICAgICAgIGxldCBpbnRlcmNl
cHRDb250aW51ZVJlc3VsdCA9IG5ldyBQcm9taXNlKGYgPT4gY2FsbGJhY2sgPSAgZik7CisgICAg
ICAgICAgICBsZXQgaW50ZXJjZXB0Q29udGludWUgPSBhc3luYyAoZXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICBsZXQgeyB0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdCB9ID0gZXZlbnQuZGF0
YTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgYXdhaXQgdGFyZ2V0
Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RJZDogJ3dyb25nSWQnLAorICAgICAgICAgICAgICAgICAgICAgIHN0YWdl
OiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
TmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51
ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7
CisgICAgICAgICAgICB0YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlKCJmZXRjaERhdGEoJ3Jl
c291cmNlcy9zY3JpcHQuanMnKSIpOworICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCBp
bnRlcmNlcHRDb250aW51ZVJlc3VsdDsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCdS
ZWNlaXZlZCBlcnJvcjogJyArIGVycm9yKTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2Vy
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVy
Y2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1
aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQg
Y29udGludWVzIHJlcXVlc3QuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1t
YWluLXJlc291cmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDIxMjU5MDQ4MzVlZjEwYjZjMDYwMzRmNjE1ZjNkZWYxMThmOWVhYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
IEBACitBTEVSVDogT1JJR0lOQUwgSFRNTCBDT05URU5UCitBTEVSVDogUkVQTEFDRUQgSFRNTCBD
T05URU5UCitPdmVycmlkZGVuIHBhZ2UgY29udGVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291
cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVz
cG9uc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMTI1OTA0ODM1ZWYxMGI2YzA2MDM0ZjYx
NWYzZGVmMTE4ZjllYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1y
ZXNwb25zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitBTEVSVDogT1JJR0lOQUwgSFRN
TCBDT05URU5UCitBTEVSVDogUkVQTEFDRUQgSFRNTCBDT05URU5UCitPdmVycmlkZGVuIHBhZ2Ug
Y29udGVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU2MDg4OTVl
OThkMWRiYThmNTZjNTk4YjU1OWU3Mjg4MjA5OWJhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFp
bi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVB
c3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UiKTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5NYWluUmVzb3VyY2Ugd2l0aCByZXNwb25zZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
TWFpbiByZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9uIG5leHQgcGFnZSBsb2Fk
IGFuZCBmdWxmaWxscyByZXF1ZXN0IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3
YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAg
ICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sIiwKKyAgICAg
ICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0
YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGludGVyY2Vw
dFdpdGhSZXNwb25zZSA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0
LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJn
ZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlw
ZTogInRleHQvaHRtbCIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGA8IURPQ1RZUEUg
aHRtbD48aHRtbD48aGVhZD48c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzIj48L2ArYHNjcmlwdD48L2hlYWQ+PGJvZHk+PHA+T3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQ8
L3A+PHNjcmlwdD5hbGVydCgiUkVQTEFDRUQgSFRNTCBDT05URU5UIik7IFRlc3RQYWdlLmNvbXBs
ZXRlVGVzdCgpOzwvYCtgc2NyaXB0PjwvYm9keT48L2h0bWw+YCwKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAw
LAorICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgICAg
ICAgICBoZWFkZXJzOiB7fSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtN
YW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlc3BvbnNlKTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFs
c2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRp
b24gaW50ZXJjZXB0aW5nIHRoZSBtYWluIHJlc291cmNlIGxvYWQgd2l0aCByZXNwb25zZS48L3A+
Cis8c2NyaXB0PmFsZXJ0KCJPUklHSU5BTCBIVE1MIENPTlRFTlQiKTs8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJl
c291cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcxNGE2OGFlMTM3ZjUwMmIxYjc0ZDI1ZjM1ZjBiY2Zj
YTllNWFmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sCkBAIC0wLDAg
KzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IElu
c3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVz
dCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiTWFp
biByZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9uIG5leHQgcGFnZSBsb2FkIiwK
KyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1
bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQu
YWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVz
b3VyY2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51
bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAg
ICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAg
ICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmlu
dm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBh
Z2UuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZAorICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBp
bnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2Fk
UGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5U
ZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgbWFpbiByZXNvdXJjZSBs
b2FkLjwvcD4KKzxzY3JpcHQ+YWxlcnQoIk9SSUdJTkFMIEhUTUwgQ09OVEVOVCIpOzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI3NDUzMzQwZTMxOWJi
MTJiY2ZmNDA1YjE1MTA0MzNkNDE3ZjRlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGll
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4NCBAQAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlv
biBhbHRlcmluZyByZXF1ZXN0IHByb3BlcnRpZXMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRl
OiBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogc2V0
VXAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9k
CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0
LWVjaG8ucGhwCisgIE1ldGhvZDogUE9TVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVu
dC1MZW5ndGg6IDAKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5NZXRob2REZWxldGUKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgor
ICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisg
IFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBERUxFVEUKKyAgUmVxdWVzdCBI
ZWFkZXJzOgorICAgIENvbnRlbnQtTGVuZ3RoOiAwCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kTm9uU3RhbmRhcmQKK1RyaWdnZXJpbmcgbG9h
ZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0
aG9kOiBOT05TVEFOREFSRAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6
IDAKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRo
b2RFbXB0eQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2Ug
VVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2lu
dGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVXJsCitUcmlnZ2Vy
aW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9uZXdVUkw9dmFsdWUKKyAgUmVzcG9uc2UgVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVy
Y2VwdC1lY2hvLnBocD9uZXdVUkw9dmFsdWUKKyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFk
ZXJzOgorICBHZXQ6CisgICAgbmV3VVJMOiB2YWx1ZQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVybEZyYWdtZW50CitUcmlnZ2VyaW5nIGxvYWQuLi4K
K1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2lu
dGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDog
R0VUCisgIFJlcXVlc3QgSGVhZGVyczoKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdC5VcmxFbXB0eQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRl
dGFpbHM6CisgIFR5cGVFcnJvcjogVGhlIFVSTCBjYW7igJl0IGJlIHNob3duCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuSGVhZGVycworVHJpZ2dlcmlu
ZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAor
ICBNZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgWC1WYWx1ZTogb3ZlcnJpZGRl
bgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlBvc3RE
YXRhCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJj
ZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogUE9TVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29u
dGVudC1MZW5ndGg6IDE2CisgICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3Jt
LXVybGVuY29kZWQKKyAgUG9zdDoKKyAgICB2YWx1ZTogb3ZlcnJpZGRlbgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMTMx
YjRhODRiN2M4MzFjOGRiMGRjNDkwYzczNTVjOTIzZWYxYjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LXByb3BlcnRpZXMuaHRtbApAQCAtMCwwICsxLDE4NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorYXN5bmMgZnVuY3Rp
b24gZmV0Y2hEYXRhKHVybCkKK3sKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwp
OworICAgIC8vIEV2YWwgdG8gYWNjZXB0IHRyYWlsaW5nIGNvbWEgSlNPTi4KKyAgICBsZXQgZGF0
YSA9IGV2YWwoJygnICsgKGF3YWl0IHJlc3BvbnNlLnRleHQoKSB8fCAie30iKSArICcpJyk7Cisg
ICAgZGF0YVsicmVzcG9uc2VVUkwiXSA9IHJlc3BvbnNlLnVybDsKKyAgICByZXR1cm4gZGF0YTsK
K30KKworYXN5bmMgZnVuY3Rpb24gcG9zdERhdGEodXJsKQoreworICAgIGxldCByZXNwb25zZSA9
IGF3YWl0IGZldGNoKHVybCwgeworICAgICAgICBtZXRob2Q6ICJQT1NUIiwKKyAgICAgICAgaGVh
ZGVyczogeworICAgICAgICAgICAgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi94LXd3dy1m
b3JtLXVybGVuY29kZWQiCisgICAgICAgIH0sCisgICAgICAgIGJvZHk6ICJ2YWx1ZT1vcmlnaW5h
bCIKKyAgICB9KTsKKyAgICAvLyBFdmFsIHRvIGFjY2VwdCB0cmFpbGluZyBjb21hIEpTT04uCisg
ICAgbGV0IGRhdGEgPSBldmFsKCcoJyArIChhd2FpdCByZXNwb25zZS50ZXh0KCkgfHwgInt9Iikg
KyAnKScpOworICAgIGRhdGFbInJlc3BvbnNlVVJMIl0gPSByZXNwb25zZS51cmw7CisgICAgcmV0
dXJuIGRhdGE7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3Bl
Y3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCIp
OworICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInNldFVwIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0
aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAiLAorICAgICAg
ICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3Rh
Z2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBh
c3luYyBmdW5jdGlvbiBsb2dSZXF1ZXN0KHJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC52
YWx1ZSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgJHtyZXN1bHQuZGVzY3Jp
cHRpb259YCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbGV0IHJl
cXVlc3QgPSByZXN1bHQudmFsdWU7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFVSSTog
JHtyZXF1ZXN0LnVyaX1gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgUmVzcG9uc2Ug
VVJMOiAke3JlcXVlc3QucmVzcG9uc2VVUkx9YCk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KGAgIE1ldGhvZDogJHtyZXF1ZXN0Lm1ldGhvZH1gKTsKKyAgICAgICAgbGV0IGhlYWRlcktleXMg
PSBPYmplY3Qua2V5cyhyZXF1ZXN0LmhlYWRlcnMpOworICAgICAgICBpZiAoaGVhZGVyS2V5cy5s
ZW5ndGgpIHsKKyAgICAgICAgICAgIGhlYWRlcktleXMuc29ydCgpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coYCAgUmVxdWVzdCBIZWFkZXJzOmApOworICAgICAgICAgICAgZm9yIChs
ZXQgbmFtZSBvZiBoZWFkZXJLZXlzKSB7CisgICAgICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0
c1dpdGgoIlgtIikgJiYgIW5hbWUuc3RhcnRzV2l0aCgiQ29udGVudC0iKSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gcmVxdWVzdC5o
ZWFkZXJzW25hbWVdOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgICAgJHtu
YW1lfTogJHt2YWx1ZX1gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQg
Z2V0S2V5cyA9IE9iamVjdC5rZXlzKHJlcXVlc3QuZ2V0KTsKKyAgICAgICAgaWYgKGdldEtleXMu
bGVuZ3RoKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiICBHZXQ6Iik7CisgICAg
ICAgICAgICBnZXRLZXlzLnNvcnQoKTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgZ2V0
S2V5cykgeworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcXVlc3QuZ2V0W25hbWVdOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgICAgJHtuYW1lfTogJHt2YWx1ZX1g
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgcG9zdEtleXMgPSBPYmpl
Y3Qua2V5cyhyZXF1ZXN0LnBvc3QpOworICAgICAgICBpZiAocG9zdEtleXMubGVuZ3RoKSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiICBQb3N0OiIpOworICAgICAgICAgICAgcG9z
dEtleXMuc29ydCgpOworICAgICAgICAgICAgZm9yIChsZXQgbmFtZSBvZiBwb3N0S2V5cykgewor
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcXVlc3QucG9zdFtuYW1lXTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcXVlc3QuZXJyb3IpCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBFcnJvcjogJHtyZXF1ZXN0LmVycm9yfWApOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgZXhwcmVz
c2lvbiwgc2V0dXAsIHRlYXJkb3duLCBvdmVycmlkZXN9KSB7CisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24s
CisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIGxldCBpbnRlcmNl
cHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBsZXQgeyB0
YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdCB9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2Uoewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgLi4ub3ZlcnJpZGVzLAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdp
dGhSZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmlu
ZyBsb2FkLi4uIik7CisgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0
LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uKTsKKyAgICAgICAgICAgICAgICByZXNw
b25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuYXdhaXRQcm9taXNlKHJlc3BvbnNlLnJl
c3VsdC5vYmplY3RJZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlJlcXVlc3QgZGV0YWlsczoiKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBsb2dSZXF1ZXN0KHJl
c3BvbnNlLnJlc3VsdCk7CisgICAgICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQs
IGludGVyY2VwdFdpdGhSZXF1ZXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0Lk1ldGhvZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRo
b2QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3Vy
Y2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDog
IlBPU1QiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRGVsZXRlIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBERUxFVEUiLAorICAg
ICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhw
JykiLAorICAgICAgICBvdmVycmlkZXM6IHsgbWV0aG9kOiAiREVMRVRFIiB9LAorICAgIH0pOwor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0Lk1ldGhvZE5vblN0YW5kYXJkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1
ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBOT05TVEFOREFSRCIsCisgICAgICAgIGV4cHJl
c3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAg
ICAgIG92ZXJyaWRlczogeyBtZXRob2Q6ICJOT05TVEFOREFSRCIgfSwKKyAgICB9KTsKKworICAg
IGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5N
ZXRob2RFbXB0eSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2Qg
aW50ZXJjZXB0aW9uIHdpdGggTk9OU1RBTkRBUkQiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0
Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlk
ZXM6IHsgbWV0aG9kOiAiIiB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVybCIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGggZGlmZmVyZW50IFVS
TCIsCisgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQt
ZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeyB1cmw6ICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9uZXdV
Ukw9dmFsdWUiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVXJsRnJhZ21lbnQiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRoIGRpZmZlcmVudCBV
UkwiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0
LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgdXJsOiAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAjZnJh
Z21lbnQiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVXJsRW1wdHkiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRoIGRpZmZlcmVudCBVUkwiLAor
ICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8u
cGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgdXJsOiAiIiB9LAorICAgIH0pOworCisgICAg
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lkhl
YWRlcnMiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaGVhZGVycyBpbnRl
cmNlcHRpb24iLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50
ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgaGVhZGVyczogeyAiWC1W
YWx1ZSI6ICJvdmVycmlkZGVuIiB9IH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuUG9zdERhdGEiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgcG9zdCBkYXRhIGludGVyY2VwdGlvbiIsCisg
ICAgICAgIGV4cHJlc3Npb246ICJwb3N0RGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBo
cCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7CisgICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwK
KyAgICAgICAgICAgIHBvc3REYXRhOiBidG9hKCJ2YWx1ZT1vdmVycmlkZGVuIiksCisgICAgICAg
IH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1
ZXN0IGludGVyY2VwdGlvbiBhbHRlcmluZyByZXF1ZXN0IHByb3BlcnRpZXMuPC9wPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTVmNGUwN2VmYjYyNmEzZmEzZmNl
OTU2ZDNjNTExZjk4MDIzYWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitBTEVSVDogREVGQVVMVCBvdmVycmlkZS5qcyBURVhU
CitBTEVSVDogT1ZFUlJJREVOIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNl
cHRpb24gaW50ZXJjZXB0aW5nIHRoZSBzdWJyZXNvdXJjZSBsb2FkLgorCisKKz09IFJ1bm5pbmcg
dGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0CistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
c3VicmVzb3VyY2Utd2l0aC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
ZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5OWU2MGNjZjUxMTllMDRjMDdlYzE0YjE5
OGEyYzcwZDVjY2JkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJy
b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorQUxFUlQ6IERFRkFVTFQgb3ZlcnJpZGUu
anMgVEVYVAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGVycm9yIGZvciB0aGUgc3Vi
cmVzb3VyY2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdFdpdGhFcnJvcgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIGVycm9yCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVz
b3VyY2Utd2l0aC1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTQwODExODM0ZmZjZmYzOGZhZmM0OTg3NWNkMDJkZDQ5ZmQ5ODU2NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCkBAIC0wLDAgKzEsNDIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3Rv
clRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9y
Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmlu
dGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBlcnJvciIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGVycm9yIiwK
KyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1
bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQu
YWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIsCisg
ICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdv
cmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisgICAgCisgICAgICAgICAgICBsZXQg
aW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQg
e3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAg
ICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yLmludm9rZSh7
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgZXJy
b3JUeXBlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5H
ZW5lcmFsLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZl
bnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAg
ICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCBy
ZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdp
dGggZXJyb3IgZm9yIHRoZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ3MGExNjZjNzY5MTNh
OGVkZTMzODJlYjljMmY4ZWY5OTJlYTc4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitBTEVSVDogREVG
QVVMVCBvdmVycmlkZS5qcyBURVhUCitBTEVSVDogT1ZFUlJJRERFTiBvdmVycmlkZS5qcyBURVhU
CitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UgZm9yIHRoZSBzdWJyZXNv
dXJjZSBsb2FkLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggcmVzcG9uc2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2Uu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNWU5MDA0NDkzYTIzNDU1NzdjMDQzZGUyMjE0YzYxZWQ2MWUyODZi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKQEAg
LTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRl
ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVl
c3RXaXRoUmVzcG9uc2UiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIHJlc3BvbnNlIiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0
aW9uIHdpdGggcmVzcG9uc2UiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAg
bGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworCisgICAgICAgICAgICBhd2Fp
dCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAg
ICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvb3ZlcnJpZGUuanMiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAg
ICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRh
dGE7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAg
ICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2phdmFzY3JpcHQiLAorICAgICAgICAg
ICAgICAgICAgICBjb250ZW50OiBgYWxlcnQoIk9WRVJSSURERU4gb3ZlcnJpZGUuanMgVEVYVCIp
OyBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJpZGVDb250ZW50RGlkTG9h
ZCIpO2AsCisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAg
ICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4
dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQs
IGludGVyY2VwdFdpdGhSZXF1ZXN0KTsKKworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVz
dC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6
IHRydWV9KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiT3Zl
cnJpZGVDb250ZW50RGlkTG9hZCIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3Bv
bnNlIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
c3VicmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODg0YWFm
YWI4YTYxNDI1M2FjNTVmZjNhZGFlZGQyNjM3MDBjNDdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1z
dWJyZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2UiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24iLAor
ICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3Vt
aW5nTWFpblRhcmdldCgpOworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5h
ZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLmpzIiwKKyAg
ICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGxldCBpbnRlcmNl
cHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0
LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJn
ZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmludm9rZSh7CisgICAgICAgICAg
ICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcyIsCisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RJZAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0
d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVz
dCk7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3Jl
Q2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgICAg
ICBhd2FpdCBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIk92ZXJyaWRlQ29udGVudERpZExvYWQi
KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNo
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxw
PlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5nIHRoZSBzdWJyZXNvdXJjZSBs
b2FkLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWExYzAyMDNlYTlh
Y2IwMDY0MzgxYzIwNWFiMWJkMjc0ZGI3N2M5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1y
ZXNwb25zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MyBAQAorQUxFUlQ6IERFRkFVTFQgb3Zl
cnJpZGUuanMgVEVYVAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlLgor
CisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnNlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogc2V0VXAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVGV4dAorVHJpZ2dlcmluZyBs
b2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUgVHlwZTogdGV4
dC9wbGFpbgorICBTdGF0dXM6IDk4NyBPdmVycmlkZSBTdGF0dXMgVGV4dAorICBSZXNwb25zZSBI
ZWFkZXJzOgorICAgIGNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbgorICAgIHgtb3ZlcnJpZGUtaGVh
ZGVyLTE6IE92ZXJyaWRlLUhlYWRlci1WYWx1ZS0xCisgICAgeC1vdmVycmlkZS1oZWFkZXItMjog
T3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTIKKyAgQ29udGVudDogUEFTUyAtIE9WRVJSSURERU4gVEVY
VAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnNlLkphdmFTY3JpcHQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoK
KyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L292ZXJyaWRlLnR4dAorICBNSU1FIFR5cGU6IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQKKyAgU3Rh
dHVzOiAyMDAgU3VwZXIgT0sKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6
IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQKKyAgICB4LWN1c3RvbS1oZWFkZXI6IEhlYWRlciB2YWx1
ZQorICBDb250ZW50OiAvKiBQQVNTICovIChmdW5jdGlvbigpIHsgLyogT1ZFUlJJRERFTiAqLyB9
KSgpOworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlLkltYWdlCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6Cisg
IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9v
dmVycmlkZS50eHQKKyAgTUlNRSBUeXBlOiBpbWFnZS9wbmcKKyAgU3RhdHVzOiAyMDAgT0sKKyAg
UmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IGltYWdlL3BuZworICBDb250ZW50
OiA8ZGF0YT4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZS5VUkwuUXVlcnlTdHJpbmcKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9u
c2UgZGV0YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4dD9zPTIKKyAgTUlNRSBUeXBlOiB0ZXh0L3BsYWluCisg
IFN0YXR1czogMjAwIE9LCisgIFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVudC1sZW5ndGg6
IDI5CisgICAgY29udGVudC10eXBlOiB0ZXh0L3BsYWluCisgIENvbnRlbnQ6IGRlZmF1bHQgb3Zl
cnJpZGUudHh0IGNvbnRlbnQKKworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRl
cmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLlVSTC5GcmFnbWVudAorVHJpZ2dlcmluZyBsb2FkLi4u
CitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUgVHlwZTogdGV4dC9wbGFp
bgorICBTdGF0dXM6IDIwMCBPSworICBSZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtdHlw
ZTogdGV4dC9wbGFpbgorICAgIHgtZXhwZWN0ZWQ6IFBBU1MKKyAgQ29udGVudDogUEFTUworCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNl
LjQwNAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0
CisgIE1JTUUgVHlwZTogdGV4dC9wbGFpbgorICBTdGF0dXM6IDQwNCBOb3QgRm91bmQKKyAgUmVz
cG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IHRleHQvcGxhaW4KKyAgICB4LWV4cGVj
dGVkOiBQQVNTCisgIENvbnRlbnQ6IFBBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTRlMTZlNTBkOGMyNDgx
YTA1MTRlNDcyNzk0N2I2ZDc2YTU3NjU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3Bv
bnNlLmh0bWwKQEAgLTAsMCArMSwxODEgQEAKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiB0
cmlnZ2VyT3ZlcnJpZGVMb2FkKHVybFN1ZmZpeCkgeworICAgIGxldCB1cmwgPSAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQiOwor
ICAgIGlmICh1cmxTdWZmaXgpCisgICAgICAgIHVybCArPSB1cmxTdWZmaXg7CisKKyAgICB0cnkg
eworICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOworICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgdXJsOiByZXNwb25zZS51cmwsCisgICAgICAgICAgICB0ZXh0OiBh
d2FpdCByZXNwb25zZS50ZXh0KCksCisgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1
cywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsCisgICAgICAg
ICAgICBoZWFkZXJzOiBbLi4ucmVzcG9uc2UuaGVhZGVyc10KKyAgICAgICAgfTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIHJldHVybiB7IGVycm9yOiBlLm1lc3NhZ2UgfTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuZGVidWcoKTsKKyAgICBs
ZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIpOworICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01h
aW5UYXJnZXQoKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInNl
dFVwIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5O
ZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJs
OiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVy
cmlkZS50eHQiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0u
TmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBhc3luYyBmdW5jdGlvbiBsb2dSZXNwb25zZShyZXNwb25zZSkgewor
ICAgICAgICByZXNwb25zZS5oZWFkZXJzID0gbmV3IE1hcChyZXNwb25zZS5oZWFkZXJzKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgVVJMOiAke3Jlc3BvbnNlLnVybH1gKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgTUlNRSBUeXBlOiAke3Jlc3BvbnNlLmhlYWRlcnMuZ2V0
KCJjb250ZW50LXR5cGUiKX1gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgU3RhdHVz
OiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhgICBSZXNwb25zZSBIZWFkZXJzOmApOworICAgICAgICBsZXQga2V5
cyA9IFsuLi5yZXNwb25zZS5oZWFkZXJzLmtleXMoKV07CisgICAgICAgIGtleXMuc29ydCgpOwor
ICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGtleXMpIHsKKyAgICAgICAgICAgIGxldCB2YWx1ZSA9
IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KG5hbWUpOworICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0
c1dpdGgoIngtIikgJiYgIW5hbWUuc3RhcnRzV2l0aCgiY29udGVudC0iKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgICAgJHtuYW1l
fTogJHt2YWx1ZX1gKTsKKyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBD
b250ZW50OiAke3Jlc3BvbnNlLnRleHR9YCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkVGVz
dENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24sIGV4cHJlc3Npb24sIHJl
c3BvbnNlRGF0YX0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAg
bmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLCB0ZWFyZG93biwKKyAgICAgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Ug
PSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1ZXN0
SWQsIHJlcXVlc3QgfSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldC5O
ZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5pbnZva2UoeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgLi4u
cmVzcG9uc2VEYXRhLAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9
OworCisgICAgICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFJlcXVl
c3RXaXRoUmVzcG9uc2UpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmln
Z2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0
YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlKGV4cHJlc3Npb24pOworICAgICAgICAgICAgICAg
IHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5hd2FpdFByb21pc2UocmVzcG9u
c2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiUmVzcG9uc2UgZGV0YWlsczoiKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBsb2dSZXNw
b25zZShyZXNwb25zZS5yZXN1bHQudmFsdWUpOworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVz
dEludGVyY2VwdGVkLCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLlRleHQiLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIkludGVyY2VwdCByZXF1ZXN0IHdpdGggdGV4dCBjb250ZW50LiIsCisgICAg
ICAgIGV4cHJlc3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKClgLAorICAgICAgICByZXNwb25z
ZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRlbnQ6IGBQQVNTIC0gT1ZFUlJJRERFTiBURVhUYCwK
KyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWltZVR5cGU6
ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1czogOTg3LAorICAgICAgICAgICAgc3Rh
dHVzVGV4dDogIk92ZXJyaWRlIFN0YXR1cyBUZXh0IiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsK
KyAgICAgICAgICAgICAgICAiWC1PdmVycmlkZS1IZWFkZXItMSI6ICJPdmVycmlkZS1IZWFkZXIt
VmFsdWUtMSIsCisgICAgICAgICAgICAgICAgIlgtT3ZlcnJpZGUtSGVhZGVyLTIiOiAiT3ZlcnJp
ZGUtSGVhZGVyLVZhbHVlLTIiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICB9KTsK
KworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZS5KYXZhU2NyaXB0IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJJbnRl
cmNlcHQgcmVxdWVzdCB3aXRoIGphdmFzY3JpcHQgY29udGVudC4iLAorICAgICAgICBleHByZXNz
aW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7Cisg
ICAgICAgICAgICBjb250ZW50OiBgLyogUEFTUyAqLyAoZnVuY3Rpb24oKSB7IC8qIE9WRVJSSURE
RU4gKi8gfSkoKTtgLAorICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAg
ICAgICBtaW1lVHlwZTogImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLAorICAgICAgICAgICAgc3Rh
dHVzOiAyMDAsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiU3VwZXIgT0siLAorICAgICAgICAg
ICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICJYLUN1c3RvbS1IZWFkZXIiOiAiSGVhZGVy
IHZhbHVlIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UuSW1hZ2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkludGVyY2VwdCByZXF1ZXN0IHdp
dGggaW1hZ2UgY29udGVudC4iLAorICAgICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRl
TG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7CisgICAgICAgICAgICBjb250ZW50OiBi
dG9hKCI8ZGF0YT4iKSwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IHRydWUsCisgICAgICAg
ICAgICBtaW1lVHlwZTogImltYWdlL3BuZyIsCisgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAg
ICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAgICBoZWFkZXJzOiB7fSwKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuUXVlcnlTdHJpbmciLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgb3ZlcnJpZGVzIHdpdGggZGlmZmVyZW50IHF1ZXJ5IHN0
cmluZ3MuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQoIj9zPTIi
KWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDog
ZmFsc2UsCisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBtaW1lVHlw
ZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICBz
dGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgaGVhZGVyczogeyJYLUV4cGVjdGVkIjogIlBB
U1MifSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuRnJhZ21lbnQi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgb3ZlcnJpZGUgZm9yIGEgbG9hZCB3aXRoIGEg
ZnJhZ21lbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQoIiNm
cmFnIilgLAorICAgICAgICByZXNwb25zZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRlbnQ6ICJQ
QVNTIiwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWlt
ZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAg
ICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsiWC1FeHBlY3RlZCI6
ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuNDA0IiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGZvciBhIDQwNCBvdmVycmlkZS4iLAorICAgICAgICBl
eHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRh
OiB7CisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBiYXNlNjRFbmNv
ZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisgICAgICAg
ICAgICBzdGF0dXM6IDQwNCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJOb3QgRm91bmQiLAor
ICAgICAgICAgICAgaGVhZGVyczogeyJYLUV4cGVjdGVkIjogIlBBU1MifSwKKyAgICAgICAgfSwK
KyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3Qg
aW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UuPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9v
dmVycmlkZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQt
ZWNoby5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhYjUwYTU3YTQ0ZGE4YmM2ZjEx
OGViNWZkZWJiZTcxMmFmNGUxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocApAQCAt
MCwwICsxLDE4IEBACit7CisgICAgInVyaSI6ICI8P3BocCBlY2hvICRfU0VSVkVSWydSRVFVRVNU
X1VSSSddID8+IiwKKyAgICAibWV0aG9kIjogIjw/cGhwIGVjaG8gJF9TRVJWRVJbJ1JFUVVFU1Rf
TUVUSE9EJ107ID8+IiwKKyAgICAiaGVhZGVycyI6IHsKKzw/cGhwIGZvcmVhY2ggKGdldGFsbGhl
YWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAgICAgIjw/cGhwIGVjaG8gJG5h
bWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8P3BocCB9ID8+IH0sCisgICAgImdl
dCI6IHsKKzw/cGhwIGZvcmVhY2ggKCRfR0VUIGFzICRuYW1lID0+ICR2YWx1ZSkgeyA/PgorICAg
ICAgICAiPD9waHAgZWNobyAkbmFtZTsgPz4iOiAiPD9waHAgZWNobyAkdmFsdWU7ID8+IiwKKzw/
cGhwIH0gPz4KKyAgICB9LAorICAgICJwb3N0IjogeworPD9waHAgZm9yZWFjaCAoJF9QT1NUIGFz
ICRuYW1lID0+ICR2YWx1ZSkgeyA/PgorICAgICAgICAiPD9waHAgZWNobyAkbmFtZTsgPz4iOiAi
PD9waHAgZWNobyAkdmFsdWU7ID8+IiwKKzw/cGhwIH0gPz4KKyAgICB9LAorfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50
ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRl
bi1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyMjE2N2VkYjBiYmUzZmIwNzJjNDcxZWM4MjM3NDk1
M2E1ZDJhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1wYWdlLmh0
bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD48
L2hlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+
CisgICAgPC9zY3JpcHQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPk92ZXJyaWRkZW4gcGFnZSBj
b250ZW50PC9wPgorICAgICAgICA8c2NyaXB0PmFsZXJ0KCJSRVBMQUNFRCBIVE1MIENPTlRFTlQi
KTsgVGVzdFBhZ2UuY29tcGxldGVUZXN0KCk7PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1
ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc4ZWM0ZTI2MTE1N2QzMzA5MTlj
MTMyODk5OTU1Nzc5ODkzN2VhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJy
aWRlbi1zY3JpcHQuanMKQEAgLTAsMCArMSwyIEBACithbGVydCgiT1ZFUlJJREVOIG92ZXJyaWRl
LmpzIFRFWFQiKTsKK1Rlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJPdmVycmlkZUNv
bnRlbnREaWRMb2FkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCmluZGV4IGEwMjY0OWQ1NmJkYjNk
Mjg1YzFmMGQ3ZjgwMGNmZTQxMDg5MjI2NDEuLjgzMWE2MWY2Nzg1ZTQ0ODhiMTJkN2RmZGVmMWZl
NjZkMzc1NTEyMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCkBAIC04NywxMiArODcsMTQgQEAg
VGVzdFBhZ2UucnVuVGVzdCA9IHdpbmRvdy5ydW5UZXN0ID0gZnVuY3Rpb24oKQogICAgIGlmICh0
eXBlb2YgdGVzdEZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgIGFsZXJ0KCJGYWls
ZWQgdG8gc2VuZCB0ZXN0KCkgYmVjYXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4iKTsKICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBsZXQgdXJsID0gdGVzdFJ1bm5lci5pbnNwZWN0b3JUZXN0U3R1YlVSTDsKICAgICBpZiAoIXVy
bCkgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIG9idGFpbiBpbnNwZWN0b3IgdGVzdCBzdHVi
IFVSTC4iKTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJbkZyb250
ZW5kKGluaXRpYWxpemVycykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51
ZS1yZXNwb25zZS5odG1sCmluZGV4IDQ0ODA2NDIwMDQ0NzY5N2ZiMDdmNDE2ZTk3ODYzOThlMDAz
ZDI0NjAuLmQ2NmUxNDBlYjcxNzg2NDdjMzg4NjI5YjBkMTNlMWFhMDFhMDMwYzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRl
LWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbApAQCAtNDYs
NyArNDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIC8vIExldCB0aGUgbG9hZCBj
b250aW51ZS4KICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVzcG9uc2VS
ZWNlaXZlZCJ9KSwKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1h
bmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHtyZXF1ZXN0
SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJlcXVlc3RJZH19KSwKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0
Q29udGludWUiLCBwYXJhbXM6IHtyZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJlcXVl
c3RJZCwgc3RhZ2U6ICJyZXNwb25zZSJ9fSksCiAgICAgICAgICAgICBdKTsKICAgICAgICAgICAg
IFByb3RvY29sVGVzdC5wYXNzKCJSZXNwb25zZSByZWNlaXZlZC4iKTsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQu
anNvbiBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVy
Y2VwdGVkLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0ZTJiMGQ5OTY3Y2ViMWVkN2UzMmNkMTkyOTM1ZGYx
NzY1ODEyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24KQEAgLTAsMCArMSBAQAoraW50ZXJjZXB0
ZWQgcmVxdWVzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401646</attachid>
            <date>2020-06-11 08:18:06 -0700</date>
            <delta_ts>2020-06-11 08:29:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200611081805.patch</filename>
            <type>text/plain</type>
            <size>108697</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YjBmYTIwZmE0MWJiOWQ3YzU2ODhlOWUzODk5YzZjYTA3MTFkZWQ1Li5jNTY1N2Y3MmM4YmNiNGY1
MTIwYTM3MTY2ZTk3ZjJkODljNDcwZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0wMyAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cCBuZWVkcyB0byAjaW5jbHVkZSBPcGVyYW5kc0lubGluZXMuaC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNmU0
MzdjODg3ODE1ZWVjNjg5YmIyNDQwYWMzYTcxNDE5MzZiOTM0Li43NzI2ZDkwZDAyZjZiYjYyNjBh
ZDE1MWEwZTg3OWE2ZmZlMmI4N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAt
MDYtMDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJv
ZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAg
ICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qg
bm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3Ig
ZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVl
c3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29u
dGludWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1t
YWluLXJlc291cmNlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNl
LXdpdGgtZXJyb3IuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3Qtc3VicmVzb3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLmh0bWwKKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVl
c3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1
ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNldEludGVy
Y2VwdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjphZGRJbnRlcmNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpyZW1vdmVJbnRlcmNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvcik6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q6OlBlbmRpbmdJbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6UGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3Q6OmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OlBlbmRpbmdJbnRlcmNlcHRSZXF1
ZXN0Ojpjb250aW51ZVdpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6SW50ZXJjZXB0OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6CisKIDIwMjAtMDYtMDMgIFJvYiBCdWlzICA8
cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBEaXNhbGxvdyByZXNwb25zZXMgd2hlbiBhIHJl
c3BvbnNlIGNvbnRhaW5zIGludmFsaWQgaGVhZGVyIHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKaW5kZXggNzNkNWY4ODk0YWIxYjczMTJhYjViY2U4OGI3ZTcyMGJiNjQwZGE4Ny4uMjNjYWFl
NTJmNTNiMmMwNzQ2OTFkYmQzZmU1MjNmZGFkNWZhODkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDYtMDMgIFBhdmVsICA8cGF2ZWwuZmVsZG1hbkBn
bWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIHJlcXVlc3QgaW50
ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVzdCBpbnRlcmNlcHRpb24gdG8g
dGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3JrLmlu
dGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBiZSBjb250
aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2FuIG5vdyBo
YXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmFkZExvY2FsUmVzb3VyY2VPdmVycmlkZSk6Cisg
ICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTG9jYWxSZXNvdXJjZU92
ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0SW50
ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlc3BvbnNl
SW50ZXJjZXB0ZWQpOgorICAgICAgICAoV0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLl9oYW5k
bGVSZXNvdXJjZU92ZXJyaWRlRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtPYnNl
cnZlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVkKToKKwogMjAyMC0wNi0wMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogR3Jh
cGhpY3M6IHNob3VsZCB1c2UgdGhlIGBpZGAgKG5hbWUpIG9mIHRoZSBhbmltYXRpb24gaWYgaXQg
ZXhpc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGY1YTg4MDU0M2RhYjFkMTkzODU0ODBiMjA0NTJhOTFmOGQzYTVi
YzIuLmI2NzY0MGRkMTk5NzUxY2I3YzE0YmJmZDczOGIzNzk1NDZiNDRjNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjAtMDYtMDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFu
QGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBp
bnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0
byB0aGUgTmV0d29yayAKKyAgICAgICAgcHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsu
aW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNv
bnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93
IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorCiAyMDIwLTA2LTAzICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEhpZGUgdGhl
IFBpUCBidXR0b24gaW4gZnVsbHNjcmVlbiBtb2RlIGlmIFBpUCBpcyBkaXNhYmxlZCBpbiBwcmVm
ZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9OZXR3b3JrLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL05ldHdvcmsuanNvbgppbmRleCBmMjQyNWRkNmFmYzBlZmJmMWQxMTUyMjBmZDQyNDZhZmUy
ZmI5MmUxLi41M2VkNTZlOTYxMDNiNDMzNGFjYTQ1MmRjZDY0YTYwODI0Y2VjYjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNv
bgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsu
anNvbgpAQCAtMTU1LDcgKzE1NSwxMyBAQAogICAgICAgICAgICAgImlkIjogIk5ldHdvcmtTdGFn
ZSIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVlc3QuIiwKLSAgICAgICAg
ICAgICJlbnVtIjogWyJyZXNwb25zZSJdCisgICAgICAgICAgICAiZW51bSI6IFsicmVxdWVzdCIs
ICJyZXNwb25zZSJdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJS
ZXNvdXJjZUVycm9yVHlwZSIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVudCBzdGFnZXMgb2YgYSBuZXR3b3JrIHJlcXVl
c3QuIiwKKyAgICAgICAgICAgICJlbnVtIjogWyJHZW5lcmFsIiwgIkFjY2Vzc0NvbnRyb2wiLCAi
Q2FuY2VsbGF0aW9uIiwgIlRpbWVvdXQiXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFu
ZHMiOiBbCkBAIC0yNDQsMTAgKzI1MCwxMCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkFkZCBhbiBpbnRlcmNlcHRpb24uIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBlcyI6IFsicGFn
ZSJdLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVVJMIHBhdHRlcm4gdG8g
aW50ZXJjZXB0LCBpbnRlcmNlcHQgZXZlcnl0aGluZyBpZiBub3Qgc3BlY2lmaWVkIG9yIGVtcHR5
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3Jr
U3RhZ2UiLCAiZGVzY3JpcHRpb24iOiAiU3RhZ2UgdG8gaW50ZXJjZXB0LiIgfSwKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImNhc2VTZW5zaXRpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBj
YXNpbmcgb2YgYHVybGAgcGFyYW1ldGVyLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJl
c3Npb24uIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJO
ZXR3b3JrU3RhZ2UiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHBy
ZXNlbnQgdGhpcyBhcHBsaWVzIHRvIGFsbCBuZXR3b3JrIHN0YWdlcy4iIH0KKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMg
YSByZWd1bGFyIGV4cHJlc3Npb24uIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAg
ICAgIHsKQEAgLTI1NiwxNyArMjYyLDI5IEBACiAgICAgICAgICAgICAidGFyZ2V0VHlwZXMiOiBb
InBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAiZGVzY3JpcHRpb24iOiAiU3Rh
Z2UgdG8gaW50ZXJjZXB0LiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhc2VTZW5z
aXRpdmUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIklmIGZhbHNlLCBpZ25vcmVzIGxldHRlciBjYXNpbmcgb2YgYHVybGAgcGFyYW1ldGVyLiIg
fSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAidHlwZSI6ICJib29sZWFu
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIHRyZWF0cyBgdXJs
YCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIiB9LAotICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgbm90IHByZXNlbnQgdGhpcyBhcHBsaWVzIHRvIGFsbCBu
ZXR3b3JrIHN0YWdlcy4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUmVnZXgiLCAi
dHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRy
dWUsIHRyZWF0cyBgdXJsYCBwYXJhbWV0ZXIgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24uIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjog
ImludGVyY2VwdENvbnRpbnVlIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb250aW51
ZSBhbiBpbnRlcmNlcHRpb24gd2l0aCBubyBtb2RpZmljYXRpb25zLiIsCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ29udGludWUgcmVxdWVzdCBvciByZXNwb25zZSB3aXRob3V0IG1vZGlm
aWNhdGlvbnMuIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBlcyI6IFsicGFnZSJdLAogICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0
SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3Ig
dGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51ZS4i
IH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVl
c3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0
d29yayByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9u
IjogIlN0YWdlIHRvIGNvbnRpbnVlLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRXaXRoUmVxdWVzdCIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVwbGFjZSBpbnRlcmNlcHRlZCByZXF1ZXN0IHdpdGgg
dGhlIHByb3ZpZGVkIG9uZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVz
Y3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVz
dCBvciByZXNwb25zZSB0byBjb250aW51ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCJkZXNjcmlwdGlv
biI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InVybCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsImRlc2NyaXB0aW9uIjog
IkhUVFAgcmVxdWVzdCB1cmwuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVy
cyIsICIkcmVmIjogIkhlYWRlcnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
SFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRocm91Z2ggb3JpZ2luYWwgdmFsdWVzIGlmIHVu
bW9kaWZpZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicG9zdERhdGEiLCAidHlw
ZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSFRUUCBQT1NU
IHJlcXVlc3QgZGF0YSwgYmFzZTY0LWVuY29kZWQuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAg
IH0sCiAgICAgICAgIHsKQEAgLTI4Miw2ICszMDAsMjcgQEAKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInN0YXR1c1RleHQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgdGV4dC4gUGFzcyB0aHJvdWdoIG9y
aWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdoIG9yaWdpbmFsIHZh
bHVlcyBpZiB1bm1vZGlmaWVkLiIgfQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm92aWRlIHJlc3BvbnNlIGZvciBhbiBpbnRl
cmNlcHRlZCByZXF1ZXN0LiBSZXF1ZXN0IGNvbXBsZXRlbHkgYnlwYXNzZXMgdGhlIG5ldHdvcmsg
aW4gdGhpcyBjYXNlIGFuZCBpcyBpbW1lZGlhdGVseSBmdWxmaWxsZWQgd2l0aCB0aGUgcHJvdmlk
ZWQgZGF0YS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24i
OiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVzcG9uc2UgdG8gbW9k
aWZ5LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJz
dHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJiYXNlNjRFbmNvZGVkIiwgInR5
cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUcnVlLCBpZiBjb250ZW50IHdhcyBzZW50
IGFzIGJhc2U2NC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtaW1lVHlwZSIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJNSU1FIFR5cGUgZm9yIHRoZSBkYXRhLiIg
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1cyIsICJ0eXBlIjogImludGVnZXIi
LCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZS4iIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2Ny
aXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVzIHRleHQuIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMiLCAiZGVzY3JpcHRpb24iOiAi
SFRUUCByZXNwb25zZSBoZWFkZXJzLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGYWlsIHJlcXVlc3Qgd2l0aCBnaXZlbiBlcnJv
ciB0eXBlLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6
ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXF1ZXN0IHRvIGZhaWwu
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JUeXBlIiwgIiRyZWYiOiAiUmVz
b3VyY2VFcnJvclR5cGUiLCAiZGVzY3JpcHRpb24iOiAiRGVsaXZlciBlcnJvciByZWFzb24gZm9y
IHRoZSByZXF1ZXN0IGZhaWx1cmUuIiB9CisgICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICBd
LAogICAgICJldmVudHMiOiBbCkBAIC0zNTcsOSArMzk2LDE3IEBACiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJyZXNvdXJjZSIsICIkcmVmIjogIkNhY2hlZFJlc291cmNlIiwgImRlc2NyaXB0
aW9uIjogIkNhY2hlZCByZXNvdXJjZSBkYXRhLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0SW50ZXJjZXB0ZWQiLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4gSFRUUCByZXF1ZXN0IGhhcyBi
ZWVuIGludGVyY2VwdGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25kIHdpdGggPGNvZGU+TmV0
d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4sIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3Q8L2NvZGU+YCBvciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZTwv
Y29kZT5gIHRvIHJlc29sdmUgdGhpcyByZXF1ZXN0LiIsCisgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJl
cXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVk
IG5ldHdvcmsuIENvcnJlc3BvbmRzIHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVl
c3RXaWxsQmVTZW50PC9jb2RlPi4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0IiwgIiRyZWYiOiAiUmVxdWVzdCIsICJkZXNjcmlwdGlvbiI6ICJPcmlnaW5hbCByZXF1ZXN0
IGNvbnRlbnQgdGhhdCB3b3VsZCBwcm9jZWVkIGlmIHRoaXMgaXMgY29udGludWVkLiIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJy
ZXNwb25zZUludGVyY2VwdGVkIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3
aGVuIEhUVFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0
IHJlc3BvbnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4gb3Ig
PGNvZGU+TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uczwvY29kZT5gIHRvIGNvbnRpbnVlIHRo
aXMgcmVzcG9uc2UuIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIEhU
VFAgcmVzcG9uc2UgaGFzIGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0IHJlc3Bv
bnNlIHdpdGggPGNvZGU+TmV0d29yay5pbnRlcmNlcHRDb250aW51ZTwvY29kZT4gb3IgPGNvZGU+
TmV0d29yay5pbnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJl
c3BvbnNlLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwKICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElk
IiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRo
aXMgaW50ZXJjZXB0ZWQgbmV0d29yay4gQ29ycmVzcG9uZHMgd2l0aCBhbiBlYXJsaWVyIDxjb2Rl
Pk5ldHdvcmsucmVxdWVzdFdpbGxCZVNlbnQ8L2NvZGU+LiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYjBk
NzY2NGEwYTBiNjA0OTI0MDllZDU5YWEzMDkyMzY3ZjZkZGE2OC4uMGYwZjJhMTM2ZWNjM2RkNTQ2
ODkzZGNhYzk1MDMyOWQ2MjFiNmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTgxMiwxMCArODEyLDE3IEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
SW1wbChDYWNoZWRSZXNvdXJjZSYgY2FjCiAgICAgfQogfQogCi1ib29sIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jv
b2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCi0gICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQt
PndpbGxJbnRlcmNlcHRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm4gbmV0d29ya0Fn
ZW50LT53aWxsSW50ZXJjZXB0KHJlcXVlc3QpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAgcmV0dXJuIG5ldHdv
cmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0KTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTgyNiw2ICs4MzMsMTIgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKKyAgICAgICAg
bmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7
Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYzdiNjZiYTEx
NTVkOTFiM2M1ZTBlMzEyZTE0YmQyZmU3MzI4NmQyNS4uZGY5MzkwNWI0NWJhZTRjNzRhNzFkMWVh
ZTg5YzEyNWUwMTgzYTIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkhp
dFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWMu
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNs
dWRlICJTdG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUg
Ildvcmtlckluc3BlY3RvclByb3h5LmgiCkBAIC0yMzQsOCArMjM1LDEwIEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZy
YW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgd2lsbEludGVy
Y2VwdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRv
Q29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KTsKQEAgLTQ0Miw4ICs0NDUsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyB2b2lk
IHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJik7CiAKLSAgICBz
dGF0aWMgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC0xMjU3LDExICsxMjYyLDE5IEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYKICAgICB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1w
bChjYWNoZWRSZXNvdXJjZSk7CiB9CiAKLWlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxJbnRlcmNlcHQoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsK
ICAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOworICAgICAgICByZXR1cm4gd2lsbEludGVy
Y2VwdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQoreworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWM6Omhh
c0Zyb250ZW5kcygpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiBzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC0xMjczLDYgKzEyODYsMTMgQEAgaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYg
ZnJhbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7
CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVx
dWVzdCgqbG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpZiAoYXV0byog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShsb2FkZXIu
ZnJhbWUoKSkpCisgICAgICAgIGludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDk1NGFhZjEyMWE5ZmE1MDdkODNiYzEwYWUzN2RlMWYx
MjhmN2RjZmMuLmUzOGVmMzk4ZTdlOWFmYzFlMDFhNTRiOWNlNjhmYzIzNTk4ZTkxNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuY3BwCkBAIC0zMCwxMSArMzAsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJj
ZXB0UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNo
b3VsZEludGVyY2VwdFJlcXVlc3QoZnJhbWUsIHJlcXVlc3QpOworfQorCiBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChj
b25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewog
ICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3Bv
bnNlKGZyYW1lLCByZXNwb25zZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVy
KQoreworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2Fk
ZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBiNjdlODliODBiNGU3YTg1ODZjYWM4
MWFkZTVkNThhMWJjYjBkNDMxLi5hMzJmODc3ZWFhMDRmMjdkMTIxMjcwY2ZmNWFjYzNiMDMyYzFj
NmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwxNCArMzYsMjcgQEAgY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQgewogcHVibGljOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAgICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwog
CiBwcml2YXRlOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5h
bChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEludGVybmFs
KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZy
YW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFsKCpmcmFt
ZSwgcmVxdWVzdCk7Cit9CisKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoZmFsc2UpOwpAQCAtNTMsNiArNjYsMTIgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSoK
ICAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3Bv
bnNlKTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Ojpp
bnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGxv
YWRlci5mcmFtZSgpLCBsb2FkZXIucmVxdWVzdCgpKSk7CisgICAgaW50ZXJjZXB0UmVxdWVzdElu
dGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUq
IGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBhZmNkZDJhN2ZhZmZlMGJlYzk4MjA3
MmQ4OTRiYzg1YzZlMzBjNDRjLi40NTk0MjlmM2Y1YzY5MDc1ZDU0ZDgxMDhlNTZjODY1OTViZjlh
ZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAu
aCIKQEAgLTQ2Niw2ICs0NjcsNyBAQCBzdGF0aWMgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlRm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzbwogewogICAgIGlm
IChyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6aW5zcGVjdG9y
UmVzb3VyY2VUeXBlKCpyZXNvdXJjZSk7CisKICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50
OjpPdGhlclJlc291cmNlOwogfQogCkBAIC04NDEsMTIgKzg0MywxMyBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9yZXNvdXJjZXNEYXRh
LT5jbGVhcigpOwogICAgIG1fZXh0cmFSZXF1ZXN0SGVhZGVycy5jbGVhcigpOwogCisgICAgY29u
dGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsK
IAogICAgIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGZhbHNlKTsKIH0KIAotYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQorYm9vbCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsLCBOZXR3b3JrU3RhZ2UgbmV0
d29ya1N0YWdlKQogewogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAt
ODU1LDYgKzg1OCwxMSBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJj
ZXB0KFVSTCB1cmwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgaW50
ZXJjZXB0IDogbV9pbnRlcmNlcHRzKSB7CisgICAgICAgIGlmIChpbnRlcmNlcHQubmV0d29ya1N0
YWdlICE9IG5ldHdvcmtTdGFnZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
aW50ZXJjZXB0LnVybC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAg
ICAgICBhdXRvIHNlYXJjaFN0cmluZ1R5cGUgPSBpbnRlcmNlcHQuaXNSZWdleCA/IENvbnRlbnRT
ZWFyY2hVdGlsaXRpZXM6OlNlYXJjaFN0cmluZ1R5cGU6OlJlZ2V4IDogQ29udGVudFNlYXJjaFV0
aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6RXhhY3RTdHJpbmc7CiAgICAgICAgIGF1dG8gcmVn
ZXggPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpjcmVhdGVSZWd1bGFyRXhwcmVzc2lvbkZvclNl
YXJjaFN0cmluZyhpbnRlcmNlcHQudXJsLCBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSwgc2VhcmNo
U3RyaW5nVHlwZSk7CiAgICAgICAgIGlmIChyZWdleC5tYXRjaCh1cmxTdHJpbmcpICE9IC0xKQpA
QCAtODY0LDYgKzg3MiwxMyBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50
ZXJjZXB0KFVSTCB1cmwpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMoKQoreworICAgIGZvciAoYXV0byYg
cGVuZGluZ1JlcXVlc3QgOiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy52YWx1ZXMoKSkKKyAg
ICAgICAgcGVuZGluZ1JlcXVlc3QtPmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCgpOworICAg
IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLmNsZWFyKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKQogewogICAgIGZvciAoYXV0
byYgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlIDogbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2Vz
LnZhbHVlcygpKQpAQCAtMTAyOSwxOCArMTA0NCwxOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJv
bwogCiAgICAgbV9pbnRlcmNlcHRpb25FbmFibGVkID0gZW5hYmxlZDsKIAotICAgIGlmICghbV9p
bnRlcmNlcHRpb25FbmFibGVkKQorICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKSB7Cisg
ICAgICAgIGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgICAgIGNvbnRpbnVlUGVuZGlu
Z1Jlc3BvbnNlcygpOworICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFk
ZEludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
SXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpCit2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25z
dCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdl
eCkKIHsKLSAgICBpZiAobmV0d29ya1N0YWdlU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0d29y
a1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFn
ZT4oKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7Ci0g
ICAgICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdl
OiAiX3MsICpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0
b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6
TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0
d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBu
ZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIEludGVyY2VwdCBpbnRlcmNlcHQ7CkBAIC0xMDQ5LDIxICsxMDY0LDE4IEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAgICAgICAgIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZl
ID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0aW9uYWxJc1JlZ2V4KQogICAg
ICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElzUmVnZXg7Ci0KLSAgICAvLyBGSVhN
RTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisgICAgaW50ZXJjZXB0Lm5ldHdvcmtT
dGFnZSA9IG5ldHdvcmtTdGFnZS52YWx1ZSgpOwogCiAgICAgaWYgKCFtX2ludGVyY2VwdHMuYXBw
ZW5kSWZOb3RDb250YWlucyhpbnRlcmNlcHQpKQotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRl
cmNlcHQgZm9yIGdpdmVuIHVybCBhbmQgZ2l2ZW4gaXNSZWdleCBhbHJlYWR5IGV4aXN0cyJfczsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJjZXB0IGZvciBnaXZlbiB1cmwsIGdpdmVuIGlz
UmVnZXgsIGFuZCBnaXZlbiBzdGFnZSBhbHJlYWR5IGV4aXN0cyJfczsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3Rh
Z2VTdHJpbmcpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9u
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKIHsKLSAgICBpZiAobmV0d29ya1N0YWdlU3Ry
aW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAg
ICAgIGlmICghbmV0d29ya1N0YWdlKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VT
dHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpuZXR3b3JrU3RhZ2VTdHJpbmcpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3b3Jr
U3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0YWdl
U3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVyY2VwdCBpbnRlcmNl
cHQ7CkBAIC0xMDcyLDE5ICsxMDg0LDI3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpy
ZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTCiAgICAg
ICAgIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAg
ICBpZiAob3B0aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRp
b25hbElzUmVnZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVz
dHMuCisgICAgaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9IG5ldHdvcmtTdGFnZS52YWx1ZSgpOwog
CiAgICAgaWYgKCFtX2ludGVyY2VwdHMucmVtb3ZlQWxsKGludGVyY2VwdCkpCi0gICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlz
UmVnZXgiX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBn
aXZlbiB1cmwsIGdpdmVuIGlzUmVnZXgsIGFuZCBnaXZlbiBzdGFnZSBhbHJlYWR5IGV4aXN0cyJf
czsKK30KKworYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFi
bGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0
KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCkKKyAgICAgICAgfHwgc2hvdWxk
SW50ZXJjZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UpOwogfQogCi1i
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCkpOworICAgIHJldHVybiBzaG91
bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTA5Miw3ICsxMTEyLDIxIEBAIGJvb2wg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwCiAgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVzcG9uc2Uu
dXJsKCkpOworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVzcG9uc2UudXJsKCksIE5ldHdv
cmtTdGFnZTo6UmVzcG9uc2UpOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7CisgICAgQVNTRVJUKG1f
ZW5hYmxlZCk7CisgICAgQVNTRVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CisKKyAgICBTdHJp
bmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQobG9hZGVyLmlkZW50
aWZpZXIoKSk7CisgICAgaWYgKG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLmNvbnRhaW5zKHJl
cXVlc3RJZCkpIHsKKyAgICAgICAgaGFuZGxlcihsb2FkZXIucmVxdWVzdCgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5zZXQocmVxdWVz
dElkLCBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0PigmbG9hZGVyLCBXVEZNb3Zl
KGhhbmRsZXIpKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRl
ZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0
KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQpAQCAtMTExMiwxNSArMTE0Niw2MyBAQCB2b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlSW50
ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9u
c2UsIG51bGxwdHIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2Vw
dENvbnRpbnVlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBuZXR3b3JrU3RhZ2VTdHJpbmcpCiB7Ci0gICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9u
c2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwotICAgIGlm
ICghcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsK
KyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3Rvckhl
bHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3Jr
U3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdv
cmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgc3dpdGNoIChuZXR3b3JrU3RhZ2UudmFsdWUoKSkgeworICAgIGNhc2UgTmV0d29y
a1N0YWdlOjpSZXF1ZXN0OgorICAgICAgICBpZiAoYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVxdWVz
dCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKSkKKyAgICAgICAg
ICAgIHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0LT5jb250aW51ZVdpdGhPcmlnaW5hbFJlcXVlc3Qo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5k
aW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2U6CisgICAgICAgIGlmIChhdXRv
IHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50
YWtlKHJlcXVlc3RJZCkpCisgICAgICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJl
c3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZvciBnaXZl
biByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRo
UmVxdWVzdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcqIG1ldGhvZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpTT046Ok9i
amVjdCogaGVhZGVycywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkKK3sKKyAgICBhdXRvIHBlbmRp
bmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOwor
ICAgIGlmIChwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVy
ID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOworICAgICAgICBpZiAodXJsKQorICAgICAg
ICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgKnVybCkpOworICAgICAgICBpZiAobWV0aG9k
KQorICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCptZXRob2QpOworICAgICAgICBp
ZiAoaGVhZGVycykgeworICAgICAgICAgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6ICpoZWFkZXJzKSB7CisgICAg
ICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICAgICAgICAgIGlmICh2YWx1
ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBleHBsaWNpdEhl
YWRlcnMuYWRkKGtleSwgaGVhZGVyVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHBvc3REYXRhKSB7CisgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOworICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKnBvc3REYXRhLCBi
dWZmZXIpKSB7CisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRlY29k
ZSBnaXZlbiBwb3N0RGF0YSJfczsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoYnVm
ZmVyKSk7CisgICAgICAgIH0KKyAgICAgICAgcGVuZGluZ1JlcXVlc3QtPmNvbnRpbnVlV2l0aFJl
cXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVx
dWVzdElkIl9zOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0
aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJp
bmcqIG1pbWVUeXBlLCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0
LCBjb25zdCBKU09OOjpPYmplY3QqIGhlYWRlcnMpCkBAIC0xMTU5LDYgKzEyNDEsNyBAQCB2b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29ucwogICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
LT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQorCiAgICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQudXRmOCgpLmRhdGEoKSwgY29udGVudC51dGY4KCkubGVu
Z3RoKCkpOwpAQCAtMTE2Niw2ICsxMjQ5LDkyIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAg
ICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kKG92ZXJyaWRlUmVzcG9uc2UsIG92
ZXJyaWRlRGF0YSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1Rl
eHQsIGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1
ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlm
ICghcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5k
aW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHBlbmRp
bmdSZXF1ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICBpZiAoIWxvYWRlci0+aWRlbnRpZmllcigp
KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0
IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBpZiAoYmFzZTY0RW5jb2RlZCkg
eworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICBpZiAoIWJhc2U2NERl
Y29kZShjb250ZW50LCBidWZmZXIpKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFi
bGUgdG8gZGVjb2RlIGdpdmVuIGNvbnRlbnQiX3M7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250
ZW50LnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQudXRmOCgpLmxlbmd0aCgpKTsKKworICAgIC8vIE1p
bWljIGRhdGEgVVJMIGxvYWQgYmVoYXZpb3IgLSByZXBvcnQgZGlkUmVjZWl2ZVJlc3BvbnNlICYg
ZGlkRmluaXNoTG9hZGluZy4KKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHBlbmRpbmdS
ZXF1ZXN0LT5tX2xvYWRlci0+dXJsKCksIG1pbWVUeXBlLCBkYXRhLT5zaXplKCksIFN0cmluZygp
KTsKKyAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpJbnNw
ZWN0b3JPdmVycmlkZSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsK
KyAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNUZXh0KTsKKyAgICBIVFRQSGVh
ZGVyTWFwIGV4cGxpY2l0SGVhZGVyczsKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhlYWRlcnMp
IHsKKyAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICBpZiAoaGVhZGVyLnZhbHVl
LT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRk
KGhlYWRlci5rZXksIGhlYWRlclZhbHVlKTsKKyAgICB9CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhl
YWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAgIHJlc3BvbnNlLnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVU
eXBlKCkpOworICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVy
LCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
IChidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihX
VEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2Up
OworICAgICAgICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkp
OworICAgIH0pOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVx
dWVzdFdpdGhFcnJvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZVN0cmluZykKK3sKKyAgICBhdXRvIHBlbmRp
bmdSZXF1ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOwor
ICAgIGlmICghcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2lu
ZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcGVuZGlu
Z1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkp
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGFib3J0IHJlcXVlc3QsIGl0IGhh
cyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJz
OjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6
UmVzb3VyY2VFcnJvclR5cGU+KGVycm9yVHlwZVN0cmluZyk7CisgICAgaWYgKCFlcnJvclR5cGUp
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGVycm9yVHlwZTog
Il9zLCBlcnJvclR5cGVTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKKyAgICBzd2l0Y2ggKGVycm9yVHlwZS52YWx1ZSgpKSB7CisgICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6R2Vu
ZXJhbDoKKyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNvdXJj
ZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNzQ29udHJvbDoK
KyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIGxvYWRlci0+dXJsKCksICJBY2Nlc3MgZGVuaWVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpBY2Nlc3NDb250cm9sKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6Q2FuY2VsbGF0aW9uOgorICAgICAg
ICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9h
ZGVyLT51cmwoKSwgIlJlcXVlc3QgY2FuY2VsZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNh
bmNlbGxhdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OlRpbWVvdXQ6CisgICAgICAgIGVycm9yID0g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgp
LCAiUmVxdWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsb2FkZXItPmRpZEZhaWwoZXJyb3IpOwor
fQorCiBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikKQEAgLTExODIsNiArMTM1MSw3IEBAIFJlZjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNv
ZGVyKGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1F
VHlwZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUobWltZVR5cGUsICJVVEYtOCIpOworCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1M
TUlNRVR5cGUobWltZVR5cGUpKSB7CiAgICAgICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIl9zKTsKICAgICAgICAgZGVjb2Rlci0+
dXNlTGVuaWVudFhNTERlY29kaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBiZmQxMzFlOWI1ODU2
Yzg0ZGE3NzI0ODA1ZTcxMzk3YjdjNzQ4NmE5Li5iNDI1OWI2OTk1MDFlMDBlYjVlMzRhYmRhZTNl
M2Y5OGNlMDkyZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTg4LDEwICs4OCwxMyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBzZXJpYWxpemVkQ2VydGlmaWNhdGUpIGZpbmFsOwog
ICAgIHZvaWQgcmVzb2x2ZVdlYlNvY2tldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIGZpbmFsOwogICAgIHZvaWQgc2V0SW50ZXJj
ZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgZmluYWw7Ci0gICAgdm9p
ZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
Ym9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgY29uc3QgU3RyaW5nKiBu
ZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlSW50ZXJjZXB0aW9uKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKSBm
aW5hbDsKLSAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQpIGZpbmFsOworICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5n
LCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4KSBmaW5hbDsK
KyAgICB2b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCogY2FzZVNl
bnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCkgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRD
b250aW51ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVx
dWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcq
IG1ldGhvZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycywg
Y29uc3QgU3RyaW5nKiBwb3N0RGF0YSkgZmluYWw7CiAgICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVz
cG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNv
bnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9i
amVjdCogaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYg
Y29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQg
c3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCYgaGVh
ZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKSBm
aW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgd2lsbFJl
Y2FsY3VsYXRlU3R5bGUoKTsKQEAgLTExOCw5ICsxMjEsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
bWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyJik7CiAgICAgdm9pZCBzZXRJbml0aWFs
U2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3Vt
ZW50Jik7Ci0gICAgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKKyAgICBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
ICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lkIGludGVy
Y2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhj
b25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKICAgICB2b2lkIHNl
YXJjaEluUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCwgUmVmUHRy
PEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+Jik7CkBAIC0xNDAsNyArMTQ1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAKLSAgICBib29sIHNob3VsZEludGVy
Y2VwdChVUkwpOworICAgIHVzaW5nIE5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZTsKKyAgICBib29sIHNob3VsZEludGVyY2VwdChVUkwsIE5l
dHdvcmtTdGFnZSk7CisgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIHZv
aWQgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAKICAgICBXZWJTb2NrZXQqIHdlYlNvY2tl
dEZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CkBAIC0xNTMsNiArMTYwLDMx
IEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAKKyAgICBjbGFzcyBQZW5k
aW5nSW50ZXJjZXB0UmVxdWVzdCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRp
bmdJbnRlcmNlcHRSZXF1ZXN0KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgcHVibGljOgorICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdChSZWZQdHI8UmVzb3Vy
Y2VMb2FkZXI+IGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIDogbV9sb2FkZXIobG9h
ZGVyKQorICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKQorICAgICAgICB7IH0KKworICAgICAgICB2b2lkIGNvbnRpbnVlV2l0aE9yaWdp
bmFsUmVxdWVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9sb2FkZXItPnJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlciht
X2xvYWRlci0+cmVxdWVzdCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY29udGludWVX
aXRoUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIocmVxdWVzdCk7CisgICAgICAgIH0KKworICAg
ICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCgpID0gZGVmYXVsdDsKKyAgICAgICAgUmVmUHRy
PFJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICB9Owor
CiAgICAgY2xhc3MgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlIHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKTsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC0yMDQsMTUgKzIzNiwxOCBAQCBwcml2YXRlOgogICAgICAgICBT
dHJpbmcgdXJsOwogICAgICAgICBib29sIGNhc2VTZW5zaXRpdmUgeyB0cnVlIH07CiAgICAgICAg
IGJvb2wgaXNSZWdleCB7IGZhbHNlIH07CisgICAgICAgIE5ldHdvcmtTdGFnZSBuZXR3b3JrU3Rh
Z2UgeyBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlIH07CiAKICAgICAgICAgaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJbnRlcmNlcHQmIG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gdXJsID09IG90aGVyLnVybAogICAgICAgICAgICAgICAgICYmIGNhc2VTZW5z
aXRpdmUgPT0gb3RoZXIuY2FzZVNlbnNpdGl2ZQotICAgICAgICAgICAgICAgICYmIGlzUmVnZXgg
PT0gb3RoZXIuaXNSZWdleDsKKyAgICAgICAgICAgICAgICAmJiBpc1JlZ2V4ID09IG90aGVyLmlz
UmVnZXgKKyAgICAgICAgICAgICAgICAmJiBuZXR3b3JrU3RhZ2UgPT0gb3RoZXIubmV0d29ya1N0
YWdlOwogICAgICAgICB9CiAgICAgfTsKICAgICBWZWN0b3I8SW50ZXJjZXB0PiBtX2ludGVyY2Vw
dHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0
UmVxdWVzdD4+IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlPj4gbV9wZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2VzOwogCiAgICAgLy8gRklYTUU6IEluc3BlY3Rvck5ldHdvcmtBZ2VudCBz
aG91bGQgbm90IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCAy
MzFlZGVjOGNjYzcxZDY1MjE3MTA2MzYzZjVjYzM0OTkwYTE2NDdlLi42NTllMmZlODkwN2IzMTU5
NzY2MGE3ZGRjNDhiOTQ1ZDMzZjBmNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg0Niw3ICs4NDYsNyBAQCBS
ZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQogCiAgICAgcmVxdWVzdC51cGRhdGVSZWZlcnJlclBvbGlj
eShkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA6IFJlZmVycmVyUG9s
aWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdCgmZnJhbWUsIHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHQoJmZyYW1lLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmVxdWVzdC5z
ZXRDYWNoaW5nUG9saWN5KENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZyk7CiAKICAgICBh
dXRvJiBwYWdlID0gKmZyYW1lLnBhZ2UoKTsKQEAgLTE0MzYsNyArMTQzNiw3IEBAIFZlY3RvcjxS
ZWY8U1ZHSW1hZ2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsQ2FjaGVkU1ZHSW1hZ2VzKCkg
Y29uc3QKIAogUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICBpZiAoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChmcmFtZSgpLCByZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW50ZXJjZXB0KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQogICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksICJJbnNwZWN0b3Ig
aW50ZXJjZXB0Il9zIH0pOwogCiAgICAgaWYgKHJlcXVlc3QuY2hhcnNldCgpLmlzRW1wdHkoKSAm
JiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0IHx8IHR5cGUgPT0gQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFu
YWdlci5qcwppbmRleCA5Mzc2MzQ5YjlkYWJhMTAyMzNiYTAxYmQ3NjQ4YWYwNzlhYTJhMGY1Li4y
NDg5ODRiMGY3NjBhMThkMzQ4ZGZjMDJkMGRlNjU5ZjJkODU5ZjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9OZXR3b3JrTWFuYWdlci5qcwpAQCAtMTU5LDkgKzE1OSw5IEBAIFdJLk5ldHdvcmtNYW5hZ2Vy
ID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUuZGlzYWJsZWQpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUu
dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5k
LkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNp
dGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNl
T3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU3Rh
Z2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMzY0LDcgKzM2NCw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xh
c3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB1cmw6
IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2
ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgICAg
ICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAgICAg
ICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFn
ZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVt
Lk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsKIAogICAgICAg
ICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLmFkZEludGVyY2VwdGlv
biBkaWQgbm90IGV4aXN0LgpAQCAtMzk3LDcgKzM5Nyw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0g
Y2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB1
cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2FzZVNlbnNp
dGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAg
ICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAg
ICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsKIAogICAg
ICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLnJlbW92ZUludGVy
Y2VwdGlvbiBkaWQgbm90IGV4aXN0LgpAQCAtOTA2LDEyICs5MDYsMjEgQEAgV0kuTmV0d29ya01h
bmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0
aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmRlbGV0ZShyZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgfQogCisgICAgcmVxdWVzdEludGVyY2VwdGVkKHRhcmdldCwgcmVxdWVzdElkLCBy
ZXF1ZXN0KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGFkZCByZXF1ZXN0IGludGVyY2VwdGlv
biBzdXBwb3J0IHRvIHRoZSBmcm9udGVuZC4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCB7dGFy
Z2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9KTsKKyAgICB9CisKICAgICByZXNwb25zZUludGVyY2Vw
dGVkKHRhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSkKICAgICB7CiAgICAgICAgIGxldCB1cmwg
PSBXSS51cmxXaXRob3V0RnJhZ21lbnQocmVzcG9uc2UudXJsKTsKICAgICAgICAgbGV0IGxvY2Fs
UmVzb3VyY2VPdmVycmlkZSA9IHRoaXMubG9jYWxSZXNvdXJjZU92ZXJyaWRlRm9yVVJMKHVybCk7
CiAgICAgICAgIGlmICghbG9jYWxSZXNvdXJjZU92ZXJyaWRlIHx8IGxvY2FsUmVzb3VyY2VPdmVy
cmlkZS5kaXNhYmxlZCkgewotICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNl
cHRDb250aW51ZShyZXF1ZXN0SWQpOworICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAg
ICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMTM3Nyw3ICsxMzg2LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFz
cyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdXJsOiBsb2Nh
bFJlc291cmNlT3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxS
ZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgIGlzUmVnZXg6IGxv
Y2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgbmV0d29ya1N0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAg
ICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdl
LlJlc3BvbnNlLAogICAgICAgICB9OwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAx
My4wKTogTmV0d29yay5hZGRJbnRlcmNlcHRpb24gLyBOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlv
biBkaWQgbm90IGV4aXN0LgpAQCAtMTQzMyw0ICsxNDQyLDUgQEAgV0kuTmV0d29ya01hbmFnZXIu
RXZlbnQgPSB7CiAgICAgQm9vdHN0cmFwU2NyaXB0RGVzdHJveWVkOiAibmV0d29yay1tYW5hZ2Vy
LWJvb3RzdHJhcC1zY3JpcHQtZGVzdHJveWVkIiwKICAgICBMb2NhbFJlc291cmNlT3ZlcnJpZGVB
ZGRlZDogIm5ldHdvcmstbWFuYWdlci1sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1hZGRlZCIsCiAg
ICAgTG9jYWxSZXNvdXJjZU92ZXJyaWRlUmVtb3ZlZDogIm5ldHdvcmstbWFuYWdlci1sb2NhbC1y
ZXNvdXJjZS1vdmVycmlkZS1yZW1vdmVkIiwKKyAgICBSZXF1ZXN0SW50ZXJjZXB0ZWQ6ICJuZXR3
b3JrLW1hbmFnZXItcmVxdWVzdC1pbnRlcmNlcHRlZCIKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2Jz
ZXJ2ZXIuanMKaW5kZXggNTljMjljOWEzODRiMDQ3OGRkOGQ2ZDBjZjU5MjhiNjI5ODE4MDBhYS4u
ZmU4ODI5YTcxYmZkMGVlZDg1NmI0MWMzYWFlY2U2YWU3ZjFhMTRkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05l
dHdvcmtPYnNlcnZlci5qcwpAQCAtMTA4LDYgKzEwOCwxMSBAQCBXSS5OZXR3b3JrT2JzZXJ2ZXIg
PSBjbGFzcyBOZXR3b3JrT2JzZXJ2ZXIgZXh0ZW5kcyBJbnNwZWN0b3JCYWNrZW5kLkRpc3BhdGNo
ZXIKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KICAgICB9CiAKKyAgICByZXF1
ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgV0kubmV0
d29ya01hbmFnZXIucmVxdWVzdEludGVyY2VwdGVkKHRoaXMuX3RhcmdldCwgcmVxdWVzdElkLCBy
ZXF1ZXN0KTsKKyAgICB9CisKICAgICByZXNwb25zZUludGVyY2VwdGVkKHJlcXVlc3RJZCwgcmVz
cG9uc2UpCiAgICAgewogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNwb25zZUludGVyY2Vw
dGVkKHRoaXMuX3RhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXgg
MDNlYmQ4OTQ0YWExYjliY2JjZWVjYmQ1ZmRkMTYxOWM1YWNhOGRhYy4uZmJmZjExOGE3ZGI2MjJj
NGQwODc3NTBlNGZkNjQzMmY3ZjM0ZGNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNTgsNiArNTgsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVsZW1lbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3Ry
YXRlZ2llcy5oPgpAQCAtMjMwLDggKzIzMSwxNCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
Y2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQog
CiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVy
LCB0cmFja2luZ1BhcmFtZXRlcnMpKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHdp
dGggdGhlIE5ldHdvcmtQcm9jZXNzIik7CisKKyAgICAgICAgaWYgKCFyZXNvdXJjZUxvYWRlci5v
cHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgJiYgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9h
ZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKKyAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChyZXNvdXJjZUxv
YWRlciwgW3RoaXMsIHByb3RlY3RlZFJlc291cmNlTG9hZGVyID0gbWFrZVJlZlB0cigmcmVzb3Vy
Y2VMb2FkZXIpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIHJlc291cmNlXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
IHsKKyAgICAgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoKnByb3Rl
Y3RlZFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJl
c291cmNlKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIs
IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNv
dXJjZSkpOwotICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV0VCTE9BREVSU1RSQVRFR1lf
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkg
YW55IGhhbmRsZXJzIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjljOWNhYTAzNzA4MGNjMmQ1ZjFjYjZkNTQ3YzE2YjVk
ZGE1NWNjYS4uNzFhMWNkNTNjMmMxYjM3MjJkMDM4ZGNlMjY5NTZiY2JmNjE0Njc5NiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQwIEBACisyMDIwLTA2LTAzICBQYXZlbCAgPHBhdmVsLmZlbGRtYW5AZ21haWwu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2Vw
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBO
ZXR3b3JrCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3JrLmludGVyY2Vw
dFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBiZSBjb250aW51ZWQs
IG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2FuIG5vdyBoYXZlCisg
ICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtY29udGludWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1y
ZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVz
b3VyY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9w
ZXJ0aWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtZXJyb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3Vi
cmVzb3VyY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC13aXRoLXJlc3BvbnNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVl
c3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlw
dC5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3By
b3RvY29sLXRlc3QuanM6CisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3Vy
Y2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uOiBBZGRlZC4KKwogMjAyMC0w
Ni0wMyAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIERpc2FsbG93IHJl
c3BvbnNlcyB3aGVuIGEgcmVzcG9uc2UgY29udGFpbnMgaW52YWxpZCBoZWFkZXIgdmFsdWVzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1hYm9ydGVkLXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NDBmMjBjYjZjMTQ2YTczZjJmYWMwYzM3NDhiY2Y2YzhlNTRmMjUxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBA
CitBTEVSVDogREVGQVVMVCBvdmVycmlkZS5qcyBURVhUCitDT05TT0xFIE1FU1NBR0U6IFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbjogQWJvcnRFcnJvcjogRmV0Y2ggaXMgYWJvcnRlZAorQ09O
U09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IEFib3J0RXJyb3I6IEZl
dGNoIGlzIGFib3J0ZWQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gb2YgdGhlIGFib3J0ZWQg
cmVxdWVzdC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkFib3J0ZWQK
K1RyaWdnZXJpbmcgbG9hZC4uLgorUmVjZWl2ZWQgZXJyb3I6IEVycm9yOiBVbmFibGUgdG8gZnVs
ZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZAorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yLkFib3J0ZWQKK1Ry
aWdnZXJpbmcgbG9hZC4uLgorUmVjZWl2ZWQgZXJyb3I6IEVycm9yOiBVbmFibGUgdG8gYWJvcnQg
cmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1y
ZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWYyNTA2MThjNzNhMDEw
YWUyMjkxZjhjZjA5MWI2NmU1MWI5Yjg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0
bWwKQEAgLTAsMCArMSwxMDEgQEAKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBmZXRjaEFu
ZEFib3J0KCkgeworICAgIGxldCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQiOworICAgIGxldCBjb250cm9sbGVyID0g
bmV3IEFib3J0Q29udHJvbGxlcigpOworICAgIGxldCB7IHNpZ25hbCB9ID0gY29udHJvbGxlcjsK
KyAgICBmZXRjaCh1cmwsIHsgc2lnbmFsIH0pOworICAgIGNvbnRyb2xsZXIuYWJvcnQoKTsKK30K
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5kZWJ1ZygpOworICAgIGxl
dCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlIik7CisgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFp
blRhcmdldCgpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAic2V0
VXAiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5l
dHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJy
aWRlLnR4dCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5O
ZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5BYm9ydGVkIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGZ1bGZpbGxzIGFib3J0ZWQg
cmVxdWVzdCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgY2FsbGJh
Y2s7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZVJlc3VsdCA9
IG5ldyBQcm9taXNlKGYgPT4gY2FsbGJhY2sgPSAgZik7CisgICAgICAgICAgICBsZXQgaW50ZXJj
ZXB0UmVxdWVzdFdpdGhSZXNwb25zZSA9IGFzeW5jIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgIGxldCB7IHRhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0IH0gPSBldmVudC5kYXRhOworICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3
b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5pbnZva2UoeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2U6
IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGVudDogIlBBU1MiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtaW1l
VHlwZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAyMDAs
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgV0kubmV0
d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1
ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAg
dGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0Y2hBbmRBYm9ydCgpIik7CisgICAgICAg
ICAgICBjb25zdCBlcnJvciA9IGF3YWl0IGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2VSZXN1
bHQ7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygnUmVjZWl2ZWQgZXJyb3I6ICcgKyBl
cnJvcik7CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJv
ci5BYm9ydGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2Vw
dGlvbiB0aGF0IHJlamVjdHMgYWJvcnRlZCByZXF1ZXN0IiwKKyAgICAgICAgYXN5bmMgdGVzdCgp
IHsKKyAgICAgICAgICAgIGxldCBjYWxsYmFjazsKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlUmVzdWx0ID0gbmV3IFByb21pc2UoZiA9PiBjYWxsYmFjayA9ICBm
KTsKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlID0gYXN5bmMg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1ZXN0SWQsIHJl
cXVlc3QgfSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVy
cm9yLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvclR5cGU6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3Jr
LlJlc291cmNlRXJyb3JUeXBlLkdlbmVyYWwsCisgICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgV0ku
bmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5S
ZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAg
ICAgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0Y2hBbmRBYm9ydCgpIik7CisgICAg
ICAgICAgICBjb25zdCBlcnJvciA9IGF3YWl0IGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2VS
ZXN1bHQ7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygnUmVjZWl2ZWQgZXJyb3I6ICcg
KyBlcnJvcik7CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0
UmVxdWVzdFdpdGhSZXNwb25zZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9mIHRoZSBhYm9y
dGVkIHJlcXVlc3QuPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVycmlkZS5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3QtY29udGludWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNmVmM2FlMjhhZThk
NjdiMTlkZGIxODYyMjU3ZTU0ZjBkNDA2NDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9u
IHRoYXQgY29udGludWVzIHJlcXVlc3QuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3
b3JrLmludGVyY2VwdENvbnRpbnVlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogc2V0VXAKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWUKK1RyaWdn
ZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgY29udGVudDoKK2Z1bmN0aW9uIG15U2NyaXB0SlMoKSB7
fQorCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29u
dGludWVXcm9uZ1N0YWdlCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlY2VpdmVkIGVycm9yOiBFcnJv
cjogTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElk
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGlu
dWVXcm9uZ0lkCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlY2VpdmVkIGVycm9yOiBFcnJvcjogTWlz
c2luZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNh
Y2NjOWI5MWZkMzE0ZmMyZmY4MmMyMTMxYTFjMDNkYWEzYmU1ZDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LWNvbnRpbnVlLmh0bWwKQEAgLTAsMCArMSwxMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0
aW9uIGZldGNoRGF0YSh1cmwpCit7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJs
KTsKKyAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UudGV4dCgpOworfQorCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5l
dHdvcmsuaW50ZXJjZXB0Q29udGludWUiKTsKKyAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdN
YWluVGFyZ2V0KCk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJz
ZXRVcCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQu
TmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVy
bDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc2Ny
aXB0LmpzIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5l
dHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0Q29udGludWUgPSAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICBsZXQgeyB0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdCB9ID0gZXZl
bnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENv
bnRpbnVlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKworICAg
ICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdENvbnRpbnVlKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAg
ICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuZXZhbHVhdGUoImZl
dGNoRGF0YSgncmVzb3VyY2VzL3NjcmlwdC5qcycpIik7CisgICAgICAgICAgICByZXNwb25zZSA9
IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuYXdhaXRQcm9taXNlKHJlc3BvbnNlLnJlc3VsdC5v
YmplY3RJZCwgdHJ1ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVzcG9uc2Ug
Y29udGVudDoiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKHJlc3BvbnNlLnJlc3Vs
dC52YWx1ZSk7CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0
Q29udGludWUpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWVXcm9uZ1N0
YWdlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0
aGF0IGNvbnRpbnVlcyB3aXRoIHRoZSB3cm9uZyBzdGFnZSIsCisgICAgICAgIGFzeW5jIHRlc3Qo
KSB7CisgICAgICAgICAgICBsZXQgY2FsbGJhY2s7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0
Q29udGludWVSZXN1bHQgPSBuZXcgUHJvbWlzZShmID0+IGNhbGxiYWNrID0gIGYpOworICAgICAg
ICAgICAgbGV0IGludGVyY2VwdENvbnRpbnVlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAg
ICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QgfSA9IGV2ZW50LmRhdGE7
CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgIGF3YWl0IHRhcmdldC5O
ZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJh
Y2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAg
ICB0YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlKCJmZXRjaERhdGEoJ3Jlc291cmNlcy9zY3Jp
cHQuanMnKSIpOworICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCBpbnRlcmNlcHRDb250
aW51ZVJlc3VsdDsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCdSZWNlaXZlZCBlcnJv
cjogJyArIGVycm9yKTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRl
cmNlcHRDb250aW51ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZVdy
b25nSWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaW50ZXJjZXB0aW9u
IHRoYXQgY29udGludWVzIHdpdGggdGhlIHdyb25nIHN0YWdlIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIGxldCBjYWxsYmFjazsKKyAgICAgICAgICAgIGxldCBpbnRlcmNl
cHRDb250aW51ZVJlc3VsdCA9IG5ldyBQcm9taXNlKGYgPT4gY2FsbGJhY2sgPSAgZik7CisgICAg
ICAgICAgICBsZXQgaW50ZXJjZXB0Q29udGludWUgPSBhc3luYyAoZXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICBsZXQgeyB0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdCB9ID0gZXZlbnQuZGF0
YTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgYXdhaXQgdGFyZ2V0
Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RJZDogJ3dyb25nSWQnLAorICAgICAgICAgICAgICAgICAgICAgIHN0YWdl
OiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
TmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51
ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7
CisgICAgICAgICAgICB0YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlKCJmZXRjaERhdGEoJ3Jl
c291cmNlcy9zY3JpcHQuanMnKSIpOworICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCBp
bnRlcmNlcHRDb250aW51ZVJlc3VsdDsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCdS
ZWNlaXZlZCBlcnJvcjogJyArIGVycm9yKTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2Vy
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVy
Y2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1
aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQg
Y29udGludWVzIHJlcXVlc3QuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1t
YWluLXJlc291cmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDIxMjU5MDQ4MzVlZjEwYjZjMDYwMzRmNjE1ZjNkZWYxMThmOWVhYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
IEBACitBTEVSVDogT1JJR0lOQUwgSFRNTCBDT05URU5UCitBTEVSVDogUkVQTEFDRUQgSFRNTCBD
T05URU5UCitPdmVycmlkZGVuIHBhZ2UgY29udGVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291
cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVz
cG9uc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMTI1OTA0ODM1ZWYxMGI2YzA2MDM0ZjYx
NWYzZGVmMTE4ZjllYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1y
ZXNwb25zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitBTEVSVDogT1JJR0lOQUwgSFRN
TCBDT05URU5UCitBTEVSVDogUkVQTEFDRUQgSFRNTCBDT05URU5UCitPdmVycmlkZGVuIHBhZ2Ug
Y29udGVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU2MDg4OTVl
OThkMWRiYThmNTZjNTk4YjU1OWU3Mjg4MjA5OWJhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFp
bi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVB
c3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UiKTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5NYWluUmVzb3VyY2Ugd2l0aCByZXNwb25zZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
TWFpbiByZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9uIG5leHQgcGFnZSBsb2Fk
IGFuZCBmdWxmaWxscyByZXF1ZXN0IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3
YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAg
ICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sIiwKKyAgICAg
ICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0
YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGludGVyY2Vw
dFdpdGhSZXNwb25zZSA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0
LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJn
ZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlw
ZTogInRleHQvaHRtbCIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGA8IURPQ1RZUEUg
aHRtbD48aHRtbD48aGVhZD48c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzIj48L2ArYHNjcmlwdD48L2hlYWQ+PGJvZHk+PHA+T3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQ8
L3A+PHNjcmlwdD5hbGVydCgiUkVQTEFDRUQgSFRNTCBDT05URU5UIik7IFRlc3RQYWdlLmNvbXBs
ZXRlVGVzdCgpOzwvYCtgc2NyaXB0PjwvYm9keT48L2h0bWw+YCwKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAw
LAorICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgICAg
ICAgICBoZWFkZXJzOiB7fSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtN
YW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlc3BvbnNlKTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFs
c2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRp
b24gaW50ZXJjZXB0aW5nIHRoZSBtYWluIHJlc291cmNlIGxvYWQgd2l0aCByZXNwb25zZS48L3A+
Cis8c2NyaXB0PmFsZXJ0KCJPUklHSU5BTCBIVE1MIENPTlRFTlQiKTs8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJl
c291cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcxNGE2OGFlMTM3ZjUwMmIxYjc0ZDI1ZjM1ZjBiY2Zj
YTllNWFmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sCkBAIC0wLDAg
KzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IElu
c3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVz
dCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiTWFp
biByZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9uIG5leHQgcGFnZSBsb2FkIiwK
KyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1
bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQu
YWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVz
b3VyY2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51
bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAg
ICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAg
ICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmlu
dm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBh
Z2UuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZAorICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBp
bnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2Fk
UGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5U
ZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgbWFpbiByZXNvdXJjZSBs
b2FkLjwvcD4KKzxzY3JpcHQ+YWxlcnQoIk9SSUdJTkFMIEhUTUwgQ09OVEVOVCIpOzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI3NDUzMzQwZTMxOWJi
MTJiY2ZmNDA1YjE1MTA0MzNkNDE3ZjRlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGll
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4NCBAQAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlv
biBhbHRlcmluZyByZXF1ZXN0IHByb3BlcnRpZXMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRl
OiBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogc2V0
VXAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9k
CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0
LWVjaG8ucGhwCisgIE1ldGhvZDogUE9TVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVu
dC1MZW5ndGg6IDAKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5NZXRob2REZWxldGUKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgor
ICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisg
IFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBERUxFVEUKKyAgUmVxdWVzdCBI
ZWFkZXJzOgorICAgIENvbnRlbnQtTGVuZ3RoOiAwCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kTm9uU3RhbmRhcmQKK1RyaWdnZXJpbmcgbG9h
ZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0
aG9kOiBOT05TVEFOREFSRAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6
IDAKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRo
b2RFbXB0eQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2Ug
VVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2lu
dGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVXJsCitUcmlnZ2Vy
aW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9uZXdVUkw9dmFsdWUKKyAgUmVzcG9uc2UgVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVy
Y2VwdC1lY2hvLnBocD9uZXdVUkw9dmFsdWUKKyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFk
ZXJzOgorICBHZXQ6CisgICAgbmV3VVJMOiB2YWx1ZQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVybEZyYWdtZW50CitUcmlnZ2VyaW5nIGxvYWQuLi4K
K1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2lu
dGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDog
R0VUCisgIFJlcXVlc3QgSGVhZGVyczoKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdC5VcmxFbXB0eQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRl
dGFpbHM6CisgIFR5cGVFcnJvcjogVGhlIFVSTCBjYW7igJl0IGJlIHNob3duCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuSGVhZGVycworVHJpZ2dlcmlu
ZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAor
ICBNZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgWC1WYWx1ZTogb3ZlcnJpZGRl
bgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlBvc3RE
YXRhCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJj
ZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogUE9TVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29u
dGVudC1MZW5ndGg6IDE2CisgICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3Jt
LXVybGVuY29kZWQKKyAgUG9zdDoKKyAgICB2YWx1ZTogb3ZlcnJpZGRlbgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMTMx
YjRhODRiN2M4MzFjOGRiMGRjNDkwYzczNTVjOTIzZWYxYjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LXByb3BlcnRpZXMuaHRtbApAQCAtMCwwICsxLDE4NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorYXN5bmMgZnVuY3Rp
b24gZmV0Y2hEYXRhKHVybCkKK3sKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwp
OworICAgIC8vIEV2YWwgdG8gYWNjZXB0IHRyYWlsaW5nIGNvbWEgSlNPTi4KKyAgICBsZXQgZGF0
YSA9IGV2YWwoJygnICsgKGF3YWl0IHJlc3BvbnNlLnRleHQoKSB8fCAie30iKSArICcpJyk7Cisg
ICAgZGF0YVsicmVzcG9uc2VVUkwiXSA9IHJlc3BvbnNlLnVybDsKKyAgICByZXR1cm4gZGF0YTsK
K30KKworYXN5bmMgZnVuY3Rpb24gcG9zdERhdGEodXJsKQoreworICAgIGxldCByZXNwb25zZSA9
IGF3YWl0IGZldGNoKHVybCwgeworICAgICAgICBtZXRob2Q6ICJQT1NUIiwKKyAgICAgICAgaGVh
ZGVyczogeworICAgICAgICAgICAgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi94LXd3dy1m
b3JtLXVybGVuY29kZWQiCisgICAgICAgIH0sCisgICAgICAgIGJvZHk6ICJ2YWx1ZT1vcmlnaW5h
bCIKKyAgICB9KTsKKyAgICAvLyBFdmFsIHRvIGFjY2VwdCB0cmFpbGluZyBjb21hIEpTT04uCisg
ICAgbGV0IGRhdGEgPSBldmFsKCcoJyArIChhd2FpdCByZXNwb25zZS50ZXh0KCkgfHwgInt9Iikg
KyAnKScpOworICAgIGRhdGFbInJlc3BvbnNlVVJMIl0gPSByZXNwb25zZS51cmw7CisgICAgcmV0
dXJuIGRhdGE7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3Bl
Y3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCIp
OworICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInNldFVwIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0
aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAiLAorICAgICAg
ICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3Rh
Z2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBh
c3luYyBmdW5jdGlvbiBsb2dSZXF1ZXN0KHJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC52
YWx1ZSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgJHtyZXN1bHQuZGVzY3Jp
cHRpb259YCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbGV0IHJl
cXVlc3QgPSByZXN1bHQudmFsdWU7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFVSSTog
JHtyZXF1ZXN0LnVyaX1gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgUmVzcG9uc2Ug
VVJMOiAke3JlcXVlc3QucmVzcG9uc2VVUkx9YCk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KGAgIE1ldGhvZDogJHtyZXF1ZXN0Lm1ldGhvZH1gKTsKKyAgICAgICAgbGV0IGhlYWRlcktleXMg
PSBPYmplY3Qua2V5cyhyZXF1ZXN0LmhlYWRlcnMpOworICAgICAgICBpZiAoaGVhZGVyS2V5cy5s
ZW5ndGgpIHsKKyAgICAgICAgICAgIGhlYWRlcktleXMuc29ydCgpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coYCAgUmVxdWVzdCBIZWFkZXJzOmApOworICAgICAgICAgICAgZm9yIChs
ZXQgbmFtZSBvZiBoZWFkZXJLZXlzKSB7CisgICAgICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0
c1dpdGgoIlgtIikgJiYgIW5hbWUuc3RhcnRzV2l0aCgiQ29udGVudC0iKSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gcmVxdWVzdC5o
ZWFkZXJzW25hbWVdOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgICAgJHtu
YW1lfTogJHt2YWx1ZX1gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQg
Z2V0S2V5cyA9IE9iamVjdC5rZXlzKHJlcXVlc3QuZ2V0KTsKKyAgICAgICAgaWYgKGdldEtleXMu
bGVuZ3RoKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiICBHZXQ6Iik7CisgICAg
ICAgICAgICBnZXRLZXlzLnNvcnQoKTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgZ2V0
S2V5cykgeworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcXVlc3QuZ2V0W25hbWVdOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgICAgJHtuYW1lfTogJHt2YWx1ZX1g
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgcG9zdEtleXMgPSBPYmpl
Y3Qua2V5cyhyZXF1ZXN0LnBvc3QpOworICAgICAgICBpZiAocG9zdEtleXMubGVuZ3RoKSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiICBQb3N0OiIpOworICAgICAgICAgICAgcG9z
dEtleXMuc29ydCgpOworICAgICAgICAgICAgZm9yIChsZXQgbmFtZSBvZiBwb3N0S2V5cykgewor
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcXVlc3QucG9zdFtuYW1lXTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcXVlc3QuZXJyb3IpCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBFcnJvcjogJHtyZXF1ZXN0LmVycm9yfWApOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgZXhwcmVz
c2lvbiwgc2V0dXAsIHRlYXJkb3duLCBvdmVycmlkZXN9KSB7CisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24s
CisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIGxldCBpbnRlcmNl
cHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBsZXQgeyB0
YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdCB9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2Uoewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgLi4ub3ZlcnJpZGVzLAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdp
dGhSZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmlu
ZyBsb2FkLi4uIik7CisgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0
LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uKTsKKyAgICAgICAgICAgICAgICByZXNw
b25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuYXdhaXRQcm9taXNlKHJlc3BvbnNlLnJl
c3VsdC5vYmplY3RJZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlJlcXVlc3QgZGV0YWlsczoiKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBsb2dSZXF1ZXN0KHJl
c3BvbnNlLnJlc3VsdCk7CisgICAgICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQs
IGludGVyY2VwdFdpdGhSZXF1ZXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0Lk1ldGhvZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRo
b2QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3Vy
Y2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDog
IlBPU1QiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRGVsZXRlIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBERUxFVEUiLAorICAg
ICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhw
JykiLAorICAgICAgICBvdmVycmlkZXM6IHsgbWV0aG9kOiAiREVMRVRFIiB9LAorICAgIH0pOwor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0Lk1ldGhvZE5vblN0YW5kYXJkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1
ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBOT05TVEFOREFSRCIsCisgICAgICAgIGV4cHJl
c3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAg
ICAgIG92ZXJyaWRlczogeyBtZXRob2Q6ICJOT05TVEFOREFSRCIgfSwKKyAgICB9KTsKKworICAg
IGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5N
ZXRob2RFbXB0eSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2Qg
aW50ZXJjZXB0aW9uIHdpdGggTk9OU1RBTkRBUkQiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0
Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlk
ZXM6IHsgbWV0aG9kOiAiIiB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVybCIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGggZGlmZmVyZW50IFVS
TCIsCisgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQt
ZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeyB1cmw6ICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9uZXdV
Ukw9dmFsdWUiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVXJsRnJhZ21lbnQiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRoIGRpZmZlcmVudCBV
UkwiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0
LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgdXJsOiAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAjZnJh
Z21lbnQiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVXJsRW1wdHkiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRoIGRpZmZlcmVudCBVUkwiLAor
ICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8u
cGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgdXJsOiAiIiB9LAorICAgIH0pOworCisgICAg
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lkhl
YWRlcnMiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaGVhZGVycyBpbnRl
cmNlcHRpb24iLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50
ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgaGVhZGVyczogeyAiWC1W
YWx1ZSI6ICJvdmVycmlkZGVuIiB9IH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuUG9zdERhdGEiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgcG9zdCBkYXRhIGludGVyY2VwdGlvbiIsCisg
ICAgICAgIGV4cHJlc3Npb246ICJwb3N0RGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBo
cCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7CisgICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwK
KyAgICAgICAgICAgIHBvc3REYXRhOiBidG9hKCJ2YWx1ZT1vdmVycmlkZGVuIiksCisgICAgICAg
IH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1
ZXN0IGludGVyY2VwdGlvbiBhbHRlcmluZyByZXF1ZXN0IHByb3BlcnRpZXMuPC9wPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTVmNGUwN2VmYjYyNmEzZmEzZmNl
OTU2ZDNjNTExZjk4MDIzYWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitBTEVSVDogREVGQVVMVCBvdmVycmlkZS5qcyBURVhU
CitBTEVSVDogT1ZFUlJJREVOIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNl
cHRpb24gaW50ZXJjZXB0aW5nIHRoZSBzdWJyZXNvdXJjZSBsb2FkLgorCisKKz09IFJ1bm5pbmcg
dGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0CistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
c3VicmVzb3VyY2Utd2l0aC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
ZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5OWU2MGNjZjUxMTllMDRjMDdlYzE0YjE5
OGEyYzcwZDVjY2JkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJy
b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorQUxFUlQ6IERFRkFVTFQgb3ZlcnJpZGUu
anMgVEVYVAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGVycm9yIGZvciB0aGUgc3Vi
cmVzb3VyY2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdFdpdGhFcnJvcgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIGVycm9yCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVz
b3VyY2Utd2l0aC1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTQwODExODM0ZmZjZmYzOGZhZmM0OTg3NWNkMDJkZDQ5ZmQ5ODU2NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCkBAIC0wLDAgKzEsNDIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3Rv
clRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9y
Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmlu
dGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBlcnJvciIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGVycm9yIiwK
KyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1
bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQu
YWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIsCisg
ICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdv
cmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisgICAgCisgICAgICAgICAgICBsZXQg
aW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQg
e3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAg
ICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yLmludm9rZSh7
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgZXJy
b3JUeXBlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5H
ZW5lcmFsLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZl
bnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisKKyAgICAgICAg
ICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCBy
ZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdp
dGggZXJyb3IgZm9yIHRoZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ3MGExNjZjNzY5MTNh
OGVkZTMzODJlYjljMmY4ZWY5OTJlYTc4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitBTEVSVDogREVG
QVVMVCBvdmVycmlkZS5qcyBURVhUCitBTEVSVDogT1ZFUlJJRERFTiBvdmVycmlkZS5qcyBURVhU
CitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UgZm9yIHRoZSBzdWJyZXNv
dXJjZSBsb2FkLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggcmVzcG9uc2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2Uu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNWU5MDA0NDkzYTIzNDU1NzdjMDQzZGUyMjE0YzYxZWQ2MWUyODZi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKQEAg
LTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRl
ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVl
c3RXaXRoUmVzcG9uc2UiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIHJlc3BvbnNlIiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0
aW9uIHdpdGggcmVzcG9uc2UiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAg
bGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworCisgICAgICAgICAgICBhd2Fp
dCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAg
ICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvb3ZlcnJpZGUuanMiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAg
ICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRh
dGE7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAg
ICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2phdmFzY3JpcHQiLAorICAgICAgICAg
ICAgICAgICAgICBjb250ZW50OiBgYWxlcnQoIk9WRVJSSURERU4gb3ZlcnJpZGUuanMgVEVYVCIp
OyBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJpZGVDb250ZW50RGlkTG9h
ZCIpO2AsCisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAg
ICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4
dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQs
IGludGVyY2VwdFdpdGhSZXF1ZXN0KTsKKworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVz
dC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6
IHRydWV9KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiT3Zl
cnJpZGVDb250ZW50RGlkTG9hZCIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3Bv
bnNlIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
c3VicmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODg0YWFm
YWI4YTYxNDI1M2FjNTVmZjNhZGFlZGQyNjM3MDBjNDdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1z
dWJyZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2UiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24iLAor
ICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3Vt
aW5nTWFpblRhcmdldCgpOworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5h
ZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLmpzIiwKKyAg
ICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGxldCBpbnRlcmNl
cHRXaXRoUmVxdWVzdCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0
LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0YXJn
ZXQuTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmludm9rZSh7CisgICAgICAgICAg
ICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcyIsCisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RJZAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0
d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVz
dCk7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3Jl
Q2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgICAg
ICBhd2FpdCBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIk92ZXJyaWRlQ29udGVudERpZExvYWQi
KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNo
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxw
PlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5nIHRoZSBzdWJyZXNvdXJjZSBs
b2FkLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWExYzAyMDNlYTlh
Y2IwMDY0MzgxYzIwNWFiMWJkMjc0ZGI3N2M5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1y
ZXNwb25zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MyBAQAorQUxFUlQ6IERFRkFVTFQgb3Zl
cnJpZGUuanMgVEVYVAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlLgor
CisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnNlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogc2V0VXAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVGV4dAorVHJpZ2dlcmluZyBs
b2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUgVHlwZTogdGV4
dC9wbGFpbgorICBTdGF0dXM6IDk4NyBPdmVycmlkZSBTdGF0dXMgVGV4dAorICBSZXNwb25zZSBI
ZWFkZXJzOgorICAgIGNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbgorICAgIHgtb3ZlcnJpZGUtaGVh
ZGVyLTE6IE92ZXJyaWRlLUhlYWRlci1WYWx1ZS0xCisgICAgeC1vdmVycmlkZS1oZWFkZXItMjog
T3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTIKKyAgQ29udGVudDogUEFTUyAtIE9WRVJSSURERU4gVEVY
VAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnNlLkphdmFTY3JpcHQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoK
KyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L292ZXJyaWRlLnR4dAorICBNSU1FIFR5cGU6IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQKKyAgU3Rh
dHVzOiAyMDAgU3VwZXIgT0sKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6
IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQKKyAgICB4LWN1c3RvbS1oZWFkZXI6IEhlYWRlciB2YWx1
ZQorICBDb250ZW50OiAvKiBQQVNTICovIChmdW5jdGlvbigpIHsgLyogT1ZFUlJJRERFTiAqLyB9
KSgpOworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlLkltYWdlCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6Cisg
IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9v
dmVycmlkZS50eHQKKyAgTUlNRSBUeXBlOiBpbWFnZS9wbmcKKyAgU3RhdHVzOiAyMDAgT0sKKyAg
UmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IGltYWdlL3BuZworICBDb250ZW50
OiA8ZGF0YT4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZS5VUkwuUXVlcnlTdHJpbmcKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9u
c2UgZGV0YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4dD9zPTIKKyAgTUlNRSBUeXBlOiB0ZXh0L3BsYWluCisg
IFN0YXR1czogMjAwIE9LCisgIFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVudC1sZW5ndGg6
IDI5CisgICAgY29udGVudC10eXBlOiB0ZXh0L3BsYWluCisgIENvbnRlbnQ6IGRlZmF1bHQgb3Zl
cnJpZGUudHh0IGNvbnRlbnQKKworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRl
cmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLlVSTC5GcmFnbWVudAorVHJpZ2dlcmluZyBsb2FkLi4u
CitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUgVHlwZTogdGV4dC9wbGFp
bgorICBTdGF0dXM6IDIwMCBPSworICBSZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtdHlw
ZTogdGV4dC9wbGFpbgorICAgIHgtZXhwZWN0ZWQ6IFBBU1MKKyAgQ29udGVudDogUEFTUworCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNl
LjQwNAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0
CisgIE1JTUUgVHlwZTogdGV4dC9wbGFpbgorICBTdGF0dXM6IDQwNCBOb3QgRm91bmQKKyAgUmVz
cG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IHRleHQvcGxhaW4KKyAgICB4LWV4cGVj
dGVkOiBQQVNTCisgIENvbnRlbnQ6IFBBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTRlMTZlNTBkOGMyNDgx
YTA1MTRlNDcyNzk0N2I2ZDc2YTU3NjU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3Bv
bnNlLmh0bWwKQEAgLTAsMCArMSwxODEgQEAKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiB0
cmlnZ2VyT3ZlcnJpZGVMb2FkKHVybFN1ZmZpeCkgeworICAgIGxldCB1cmwgPSAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQiOwor
ICAgIGlmICh1cmxTdWZmaXgpCisgICAgICAgIHVybCArPSB1cmxTdWZmaXg7CisKKyAgICB0cnkg
eworICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOworICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgdXJsOiByZXNwb25zZS51cmwsCisgICAgICAgICAgICB0ZXh0OiBh
d2FpdCByZXNwb25zZS50ZXh0KCksCisgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1
cywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsCisgICAgICAg
ICAgICBoZWFkZXJzOiBbLi4ucmVzcG9uc2UuaGVhZGVyc10KKyAgICAgICAgfTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIHJldHVybiB7IGVycm9yOiBlLm1lc3NhZ2UgfTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuZGVidWcoKTsKKyAgICBs
ZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIpOworICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01h
aW5UYXJnZXQoKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInNl
dFVwIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5O
ZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJs
OiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVy
cmlkZS50eHQiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0u
TmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBhc3luYyBmdW5jdGlvbiBsb2dSZXNwb25zZShyZXNwb25zZSkgewor
ICAgICAgICByZXNwb25zZS5oZWFkZXJzID0gbmV3IE1hcChyZXNwb25zZS5oZWFkZXJzKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgVVJMOiAke3Jlc3BvbnNlLnVybH1gKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgTUlNRSBUeXBlOiAke3Jlc3BvbnNlLmhlYWRlcnMuZ2V0
KCJjb250ZW50LXR5cGUiKX1gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgU3RhdHVz
OiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhgICBSZXNwb25zZSBIZWFkZXJzOmApOworICAgICAgICBsZXQga2V5
cyA9IFsuLi5yZXNwb25zZS5oZWFkZXJzLmtleXMoKV07CisgICAgICAgIGtleXMuc29ydCgpOwor
ICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGtleXMpIHsKKyAgICAgICAgICAgIGxldCB2YWx1ZSA9
IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KG5hbWUpOworICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0
c1dpdGgoIngtIikgJiYgIW5hbWUuc3RhcnRzV2l0aCgiY29udGVudC0iKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgICAgJHtuYW1l
fTogJHt2YWx1ZX1gKTsKKyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBD
b250ZW50OiAke3Jlc3BvbnNlLnRleHR9YCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkVGVz
dENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24sIGV4cHJlc3Npb24sIHJl
c3BvbnNlRGF0YX0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAg
bmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLCB0ZWFyZG93biwKKyAgICAgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Ug
PSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1ZXN0
SWQsIHJlcXVlc3QgfSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldC5O
ZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5pbnZva2UoeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgLi4u
cmVzcG9uc2VEYXRhLAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9
OworCisgICAgICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFJlcXVl
c3RXaXRoUmVzcG9uc2UpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmln
Z2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0
YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlKGV4cHJlc3Npb24pOworICAgICAgICAgICAgICAg
IHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5hd2FpdFByb21pc2UocmVzcG9u
c2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiUmVzcG9uc2UgZGV0YWlsczoiKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBsb2dSZXNw
b25zZShyZXNwb25zZS5yZXN1bHQudmFsdWUpOworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVz
dEludGVyY2VwdGVkLCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLlRleHQiLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIkludGVyY2VwdCByZXF1ZXN0IHdpdGggdGV4dCBjb250ZW50LiIsCisgICAg
ICAgIGV4cHJlc3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKClgLAorICAgICAgICByZXNwb25z
ZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRlbnQ6IGBQQVNTIC0gT1ZFUlJJRERFTiBURVhUYCwK
KyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWltZVR5cGU6
ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1czogOTg3LAorICAgICAgICAgICAgc3Rh
dHVzVGV4dDogIk92ZXJyaWRlIFN0YXR1cyBUZXh0IiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsK
KyAgICAgICAgICAgICAgICAiWC1PdmVycmlkZS1IZWFkZXItMSI6ICJPdmVycmlkZS1IZWFkZXIt
VmFsdWUtMSIsCisgICAgICAgICAgICAgICAgIlgtT3ZlcnJpZGUtSGVhZGVyLTIiOiAiT3ZlcnJp
ZGUtSGVhZGVyLVZhbHVlLTIiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICB9KTsK
KworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZS5KYXZhU2NyaXB0IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJJbnRl
cmNlcHQgcmVxdWVzdCB3aXRoIGphdmFzY3JpcHQgY29udGVudC4iLAorICAgICAgICBleHByZXNz
aW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7Cisg
ICAgICAgICAgICBjb250ZW50OiBgLyogUEFTUyAqLyAoZnVuY3Rpb24oKSB7IC8qIE9WRVJSSURE
RU4gKi8gfSkoKTtgLAorICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAg
ICAgICBtaW1lVHlwZTogImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLAorICAgICAgICAgICAgc3Rh
dHVzOiAyMDAsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiU3VwZXIgT0siLAorICAgICAgICAg
ICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICJYLUN1c3RvbS1IZWFkZXIiOiAiSGVhZGVy
IHZhbHVlIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UuSW1hZ2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkludGVyY2VwdCByZXF1ZXN0IHdp
dGggaW1hZ2UgY29udGVudC4iLAorICAgICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRl
TG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7CisgICAgICAgICAgICBjb250ZW50OiBi
dG9hKCI8ZGF0YT4iKSwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IHRydWUsCisgICAgICAg
ICAgICBtaW1lVHlwZTogImltYWdlL3BuZyIsCisgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAg
ICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAgICBoZWFkZXJzOiB7fSwKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuUXVlcnlTdHJpbmciLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgb3ZlcnJpZGVzIHdpdGggZGlmZmVyZW50IHF1ZXJ5IHN0
cmluZ3MuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQoIj9zPTIi
KWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDog
ZmFsc2UsCisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBtaW1lVHlw
ZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICBz
dGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgaGVhZGVyczogeyJYLUV4cGVjdGVkIjogIlBB
U1MifSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuRnJhZ21lbnQi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgb3ZlcnJpZGUgZm9yIGEgbG9hZCB3aXRoIGEg
ZnJhZ21lbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQoIiNm
cmFnIilgLAorICAgICAgICByZXNwb25zZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRlbnQ6ICJQ
QVNTIiwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWlt
ZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAg
ICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsiWC1FeHBlY3RlZCI6
ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuNDA0IiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGZvciBhIDQwNCBvdmVycmlkZS4iLAorICAgICAgICBl
eHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRh
OiB7CisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBiYXNlNjRFbmNv
ZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisgICAgICAg
ICAgICBzdGF0dXM6IDQwNCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJOb3QgRm91bmQiLAor
ICAgICAgICAgICAgaGVhZGVyczogeyJYLUV4cGVjdGVkIjogIlBBU1MifSwKKyAgICAgICAgfSwK
KyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3Qg
aW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UuPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9v
dmVycmlkZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQt
ZWNoby5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhYjUwYTU3YTQ0ZGE4YmM2ZjEx
OGViNWZkZWJiZTcxMmFmNGUxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocApAQCAt
MCwwICsxLDE4IEBACit7CisgICAgInVyaSI6ICI8P3BocCBlY2hvICRfU0VSVkVSWydSRVFVRVNU
X1VSSSddID8+IiwKKyAgICAibWV0aG9kIjogIjw/cGhwIGVjaG8gJF9TRVJWRVJbJ1JFUVVFU1Rf
TUVUSE9EJ107ID8+IiwKKyAgICAiaGVhZGVycyI6IHsKKzw/cGhwIGZvcmVhY2ggKGdldGFsbGhl
YWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAgICAgIjw/cGhwIGVjaG8gJG5h
bWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8P3BocCB9ID8+IH0sCisgICAgImdl
dCI6IHsKKzw/cGhwIGZvcmVhY2ggKCRfR0VUIGFzICRuYW1lID0+ICR2YWx1ZSkgeyA/PgorICAg
ICAgICAiPD9waHAgZWNobyAkbmFtZTsgPz4iOiAiPD9waHAgZWNobyAkdmFsdWU7ID8+IiwKKzw/
cGhwIH0gPz4KKyAgICB9LAorICAgICJwb3N0IjogeworPD9waHAgZm9yZWFjaCAoJF9QT1NUIGFz
ICRuYW1lID0+ICR2YWx1ZSkgeyA/PgorICAgICAgICAiPD9waHAgZWNobyAkbmFtZTsgPz4iOiAi
PD9waHAgZWNobyAkdmFsdWU7ID8+IiwKKzw/cGhwIH0gPz4KKyAgICB9LAorfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50
ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRl
bi1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyMjE2N2VkYjBiYmUzZmIwNzJjNDcxZWM4MjM3NDk1
M2E1ZDJhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1wYWdlLmh0
bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD48
L2hlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+
CisgICAgPC9zY3JpcHQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPk92ZXJyaWRkZW4gcGFnZSBj
b250ZW50PC9wPgorICAgICAgICA8c2NyaXB0PmFsZXJ0KCJSRVBMQUNFRCBIVE1MIENPTlRFTlQi
KTsgVGVzdFBhZ2UuY29tcGxldGVUZXN0KCk7PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1
ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc4ZWM0ZTI2MTE1N2QzMzA5MTlj
MTMyODk5OTU1Nzc5ODkzN2VhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJy
aWRlbi1zY3JpcHQuanMKQEAgLTAsMCArMSwyIEBACithbGVydCgiT1ZFUlJJREVOIG92ZXJyaWRl
LmpzIFRFWFQiKTsKK1Rlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJPdmVycmlkZUNv
bnRlbnREaWRMb2FkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCmluZGV4IGEwMjY0OWQ1NmJkYjNk
Mjg1YzFmMGQ3ZjgwMGNmZTQxMDg5MjI2NDEuLjgzMWE2MWY2Nzg1ZTQ0ODhiMTJkN2RmZGVmMWZl
NjZkMzc1NTEyMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCkBAIC04NywxMiArODcsMTQgQEAg
VGVzdFBhZ2UucnVuVGVzdCA9IHdpbmRvdy5ydW5UZXN0ID0gZnVuY3Rpb24oKQogICAgIGlmICh0
eXBlb2YgdGVzdEZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgIGFsZXJ0KCJGYWls
ZWQgdG8gc2VuZCB0ZXN0KCkgYmVjYXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4iKTsKICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBsZXQgdXJsID0gdGVzdFJ1bm5lci5pbnNwZWN0b3JUZXN0U3R1YlVSTDsKICAgICBpZiAoIXVy
bCkgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIG9idGFpbiBpbnNwZWN0b3IgdGVzdCBzdHVi
IFVSTC4iKTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJbkZyb250
ZW5kKGluaXRpYWxpemVycykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51
ZS1yZXNwb25zZS5odG1sCmluZGV4IDQ0ODA2NDIwMDQ0NzY5N2ZiMDdmNDE2ZTk3ODYzOThlMDAz
ZDI0NjAuLmQ2NmUxNDBlYjcxNzg2NDdjMzg4NjI5YjBkMTNlMWFhMDFhMDMwYzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRl
LWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbApAQCAtNDYs
NyArNDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIC8vIExldCB0aGUgbG9hZCBj
b250aW51ZS4KICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVzcG9uc2VS
ZWNlaXZlZCJ9KSwKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1h
bmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHtyZXF1ZXN0
SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJlcXVlc3RJZH19KSwKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0
Q29udGludWUiLCBwYXJhbXM6IHtyZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJlcXVl
c3RJZCwgc3RhZ2U6ICJyZXNwb25zZSJ9fSksCiAgICAgICAgICAgICBdKTsKICAgICAgICAgICAg
IFByb3RvY29sVGVzdC5wYXNzKCJSZXNwb25zZSByZWNlaXZlZC4iKTsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQu
anNvbiBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVy
Y2VwdGVkLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0ZTJiMGQ5OTY3Y2ViMWVkN2UzMmNkMTkyOTM1ZGYx
NzY1ODEyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24KQEAgLTAsMCArMSBAQAoraW50ZXJjZXB0
ZWQgcmVxdWVzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyOWZlNzlmZWRmYTUwODViODZm
M2IxZGNmZjgwYTIzNzRlMmUzZGUxLi5jMDFhZmRiNGUxYzc5N2MwNGM1Y2VjNjRiMzVkMTg2Nzdk
OTQyMjYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRp
b25zCkBAIC01NzQsNiArNTc0LDE3IEBAIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9j
YWwtcmVzb3VyY2Utb3ZlcnJpZGUtc2NyaXB0LXRhZy5odG1sIFsgRmFpbHVyZSBdCiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNlLWluc3BlY3Rvci1vdmVycmlk
ZS5odG1sIFsgRmFpbHVyZSBdCiBpbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVy
cmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sIFsgU2tpcCBdCiAKKyMgUmVxdWVzdCBpbnRlcmNl
cHRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBXZWJLaXQxCitodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UuaHRtbCBbIFNraXAgXQoraHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwg
WyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
c3VicmVzb3VyY2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCBbIFNraXAg
XQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0
aWVzLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWwgWyBT
a2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFp
bi1yZXNvdXJjZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbCBbIFNraXAgXQorCiB3
ZWJraXQub3JnL2IvMTY0OTMzIGh0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxv
YWQuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTY1NTQxIGNvbXBvc2l0aW5nL2xh
eWVyLWNyZWF0aW9uL2ZpeGVkLW92ZXJsYXAtZXh0ZW50LXJ0bC5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401648</attachid>
            <date>2020-06-11 08:29:57 -0700</date>
            <delta_ts>2020-06-12 21:06:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200611082956.patch</filename>
            <type>text/plain</type>
            <size>108623</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTk1MjMwNmRlNGQ3MDNlYWNkY2VkYTliYzFlNjUxYzg0OGFmNGE4Li4xMjhjMTk4ZmE5YTczMzk1
MDYyZTNiNTg3NDkwNTJjMTVhYTZmNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0xMSAgUGF1bG8gTWF0
b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBpbmNsdWRlIHRv
IEpTT05PYmplY3QuY3BwIC0gbm9uLXVuaWZpZWQgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGM5MDI3
ZjM1ZDA3ZjcyOTQwMjVmY2Y3ZGY5NjM5MzQzYTllNmM5Li40Yzc1MGU1MTA1ZmE4MTI1ODg2ZWQ1
MTlmNTkzNjRmN2MwNWQ5Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAtMDYt
MDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAg
cHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90
aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVs
ZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3Qn
IGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGlu
dWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWlu
LXJlc291cmNlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtZXJyb3IuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
c3VicmVzb3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLmh0bWwKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3RJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJj
ZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50
ZXJjZXB0UmVxdWVzdEludGVybmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNldEludGVyY2Vw
dGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojph
ZGRJbnRlcmNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjpyZW1vdmVJbnRlcmNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50Ojp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRpbnVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvcik6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q6OlBlbmRpbmdJbnRlcmNlcHRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6UGVuZGlu
Z0ludGVyY2VwdFJlcXVlc3Q6OmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OlBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0
Ojpjb250aW51ZVdpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6SW50ZXJjZXB0OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6CisKIDIwMjAtMDYtMTEgIFJvYiBCdWlzICA8cmJ1
aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXByb3ZlIHVybC1zZXR0ZXJzLmh0bWwgV1BUIHRl
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDAxZWZlM2QyZjBlOTg4NTY1NzQxOWQyMTcw
YmEwZGM0ZTVjYzc1NDQuLmY1MmZkOWU4YjJlMDcxNWJkNmNkYzA0NDc1OTEzNDQ4NmMyMmVlYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA2LTAzICBQ
YXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0
d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAgcHJvdG9j
b2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0
aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVk
LiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAn
cmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
TmV0d29ya01hbmFnZXIuanM6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUu
aW5pdGlhbGl6ZVRhcmdldCk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUu
YWRkTG9jYWxSZXNvdXJjZU92ZXJyaWRlKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnBy
b3RvdHlwZS5yZW1vdmVMb2NhbFJlc291cmNlT3ZlcnJpZGUpOgorICAgICAgICAoV0kuTmV0d29y
a01hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RJbnRlcmNlcHRlZCk6CisgICAgICAgIChXSS5OZXR3
b3JrTWFuYWdlci5wcm90b3R5cGUucmVzcG9uc2VJbnRlcmNlcHRlZCk6CisgICAgICAgIChXSS5O
ZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZVJlc291cmNlT3ZlcnJpZGVEaXNhYmxlZENo
YW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVy
LmpzOgorICAgICAgICAoV0kuTmV0d29ya09ic2VydmVyLnByb3RvdHlwZS5yZXF1ZXN0SW50ZXJj
ZXB0ZWQpOgorCiAyMDIwLTA2LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB0ZXh0IGlucHV0cyBzaG91bGQgbm90IHNwZWxsY2hl
Y2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZTdmODQ5ZDZmODg3M2IwNzYxYmQ4NWI0YzAzNjU2YTk5MGFhOTVjYy4u
YmNkYjQ2ZTNhZTkyMmUzMWI0MzMwZWZiZmNhMjZkOWNmMWY5N2E5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisKIDIwMjAtMDYtMTEgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNZWRp
YVVzYWdlTWFuYWdlckNvY29hIHNob3VsZCB1c2UgYSBkaWZmZXJlbnQgVVNWaWRlb1VzYWdlIGlu
aXRpYWxpemVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3By
b3RvY29sL05ldHdvcmsuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvTmV0d29yay5qc29uCmluZGV4IGYyNDI1ZGQ2YWZjMGVmYmYxZDExNTIyMGZkNDI0NmFm
ZTJmYjkyZTEuLjUzZWQ1NmU5NjEwM2I0MzM0YWNhNDUyZGNkNjRhNjA4MjRjZWNiNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29y
ay5qc29uCkBAIC0xNTUsNyArMTU1LDEzIEBACiAgICAgICAgICAgICAiaWQiOiAiTmV0d29ya1N0
YWdlIiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRGlmZmVyZW50IHN0YWdlcyBvZiBhIG5ldHdvcmsgcmVxdWVzdC4iLAotICAgICAg
ICAgICAgImVudW0iOiBbInJlc3BvbnNlIl0KKyAgICAgICAgICAgICJlbnVtIjogWyJyZXF1ZXN0
IiwgInJlc3BvbnNlIl0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjog
IlJlc291cmNlRXJyb3JUeXBlIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlmZmVyZW50IHN0YWdlcyBvZiBhIG5ldHdvcmsgcmVx
dWVzdC4iLAorICAgICAgICAgICAgImVudW0iOiBbIkdlbmVyYWwiLCAiQWNjZXNzQ29udHJvbCIs
ICJDYW5jZWxsYXRpb24iLCAiVGltZW91dCJdCiAgICAgICAgIH0KICAgICBdLAogICAgICJjb21t
YW5kcyI6IFsKQEAgLTI0NCwxMCArMjUwLDEwIEBACiAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiQWRkIGFuIGludGVyY2VwdGlvbi4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVzIjogWyJw
YWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgcGF0dGVybiB0
byBpbnRlcmNlcHQsIGludGVyY2VwdCBldmVyeXRoaW5nIGlmIG5vdCBzcGVjaWZpZWQgb3IgZW1w
dHkiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdv
cmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0byBpbnRlcmNlcHQuIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiY2FzZVNlbnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0dGVy
IGNhc2luZyBvZiBgdXJsYCBwYXJhbWV0ZXIuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiaXNSZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhw
cmVzc2lvbi4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjog
Ik5ldHdvcmtTdGFnZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBub3Qg
cHJlc2VudCB0aGlzIGFwcGxpZXMgdG8gYWxsIG5ldHdvcmsgc3RhZ2VzLiIgfQorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBh
cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAg
ICAgICAgewpAQCAtMjU2LDE3ICsyNjIsMjkgQEAKICAgICAgICAgICAgICJ0YXJnZXRUeXBlcyI6
IFsicGFnZSJdLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJT
dGFnZSB0byBpbnRlcmNlcHQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FzZVNl
bnNpdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiSWYgZmFsc2UsIGlnbm9yZXMgbGV0dGVyIGNhc2luZyBvZiBgdXJsYCBwYXJhbWV0ZXIu
IiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIsICJ0eXBlIjogImJvb2xl
YW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgdHJlYXRzIGB1
cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0sCi0gICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdvcmtTdGFnZSIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBub3QgcHJlc2VudCB0aGlzIGFwcGxpZXMgdG8gYWxs
IG5ldHdvcmsgc3RhZ2VzLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNSZWdleCIs
ICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYg
dHJ1ZSwgdHJlYXRzIGB1cmxgIHBhcmFtZXRlciBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIH0K
ICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUi
OiAiaW50ZXJjZXB0Q29udGludWUiLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRp
bnVlIGFuIGludGVyY2VwdGlvbiB3aXRoIG5vIG1vZGlmaWNhdGlvbnMuIiwKKyAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJDb250aW51ZSByZXF1ZXN0IG9yIHJlc3BvbnNlIHdpdGhvdXQgbW9k
aWZpY2F0aW9ucy4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdlIl0sCiAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVl
c3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZv
ciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVl
LiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVx
dWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBO
ZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic3RhZ2UiLCAiJHJlZiI6ICJOZXR3b3JrU3RhZ2UiLCAiZGVzY3JpcHRp
b24iOiAiU3RhZ2UgdG8gY29udGludWUuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdFdpdGhSZXF1ZXN0IiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYWNlIGludGVyY2VwdGVkIHJlcXVlc3Qgd2l0
aCB0aGUgcHJvdmlkZWQgb25lLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJk
ZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXF1
ZXN0IG9yIHJlc3BvbnNlIHRvIGNvbnRpbnVlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm1ldGhvZCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsImRlc2NyaXB0
aW9uIjogIkhUVFAgcmVxdWVzdCBtZXRob2QuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwiZGVzY3JpcHRpb24i
OiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFk
ZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYg
dW5tb2RpZmllZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3N0RGF0YSIsICJ0
eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIFBP
U1QgcmVxdWVzdCBkYXRhLCBiYXNlNjQtZW5jb2RlZC4iIH0KICAgICAgICAgICAgIF0KICAgICAg
ICAgfSwKICAgICAgICAgewpAQCAtMjgyLDYgKzMwMCwyNyBAQAogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic3RhdHVzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0LiBQYXNzIHRocm91Z2gg
b3JpZ2luYWwgdmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiaGVhZGVycyIsICIkcmVmIjogIkhlYWRlcnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJzLiBQYXNzIHRocm91Z2ggb3JpZ2luYWwg
dmFsdWVzIGlmIHVubW9kaWZpZWQuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Ui
LAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgcmVzcG9uc2UgZm9yIGFuIGlu
dGVyY2VwdGVkIHJlcXVlc3QuIFJlcXVlc3QgY29tcGxldGVseSBieXBhc3NlcyB0aGUgbmV0d29y
ayBpbiB0aGlzIGNhc2UgYW5kIGlzIGltbWVkaWF0ZWx5IGZ1bGZpbGxlZCB3aXRoIHRoZSBwcm92
aWRlZCBkYXRhLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIGZvciB0aGUgaW50ZXJjZXB0ZWQgTmV0d29yayByZXNwb25zZSB0byBt
b2RpZnkuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBlIjog
InN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJhc2U2NEVuY29kZWQiLCAi
dHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUsIGlmIGNvbnRlbnQgd2FzIHNl
bnQgYXMgYmFzZTY0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1pbWVUeXBlIiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk1JTUUgVHlwZSBmb3IgdGhlIGRhdGEu
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzIiwgInR5cGUiOiAiaW50ZWdl
ciIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlLiIgfSwKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1c1RleHQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgdGV4dC4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJkZXNjcmlwdGlvbiI6
ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3Ii
LAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZhaWwgcmVxdWVzdCB3aXRoIGdpdmVuIGVy
cm9yIHR5cGUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9u
IjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3QgdG8gZmFp
bC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlcnJvclR5cGUiLCAiJHJlZiI6ICJS
ZXNvdXJjZUVycm9yVHlwZSIsICJkZXNjcmlwdGlvbiI6ICJEZWxpdmVyIGVycm9yIHJlYXNvbiBm
b3IgdGhlIHJlcXVlc3QgZmFpbHVyZS4iIH0KKyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAg
IF0sCiAgICAgImV2ZW50cyI6IFsKQEAgLTM1Nyw5ICszOTYsMTcgQEAKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlc291cmNlIiwgIiRyZWYiOiAiQ2FjaGVkUmVzb3VyY2UiLCAiZGVzY3Jp
cHRpb24iOiAiQ2FjaGVkIHJlc291cmNlIGRhdGEuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3RJbnRlcmNlcHRlZCIs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlcXVlc3QgaGFz
IGJlZW4gaW50ZXJjZXB0ZWQuIFRoZSBmcm9udGVuZCBtdXN0IHJlc3BvbmQgd2l0aCA8Y29kZT5O
ZXR3b3JrLmludGVyY2VwdENvbnRpbnVlPC9jb2RlPiwgPGNvZGU+TmV0d29yay5pbnRlcmNlcHRX
aXRoUmVxdWVzdDwvY29kZT5gIG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNl
PC9jb2RlPmAgdG8gcmVzb2x2ZSB0aGlzIHJlcXVlc3QuIiwKKyAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAi
UmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoaXMgaW50ZXJjZXB0
ZWQgbmV0d29yay4gQ29ycmVzcG9uZHMgd2l0aCBhbiBlYXJsaWVyIDxjb2RlPk5ldHdvcmsucmVx
dWVzdFdpbGxCZVNlbnQ8L2NvZGU+LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJl
cXVlc3QiLCAiJHJlZiI6ICJSZXF1ZXN0IiwgImRlc2NyaXB0aW9uIjogIk9yaWdpbmFsIHJlcXVl
c3QgY29udGVudCB0aGF0IHdvdWxkIHByb2NlZWQgaWYgdGhpcyBpcyBjb250aW51ZWQuIiB9Cisg
ICAgICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjog
InJlc3BvbnNlSW50ZXJjZXB0ZWQiLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVk
IHdoZW4gSFRUUCByZXNwb25zZSBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11
c3QgcmVzcG9uc2Ugd2l0aCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdENvbnRpbnVlPC9jb2RlPiBv
ciA8Y29kZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zPC9jb2RlPmAgdG8gY29udGludWUg
dGhpcyByZXNwb25zZS4iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4g
SFRUUCByZXNwb25zZSBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3QgcmVz
cG9uc2Ugd2l0aCA8Y29kZT5OZXR3b3JrLmludGVyY2VwdENvbnRpbnVlPC9jb2RlPiBvciA8Y29k
ZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXNwb25zZTwvY29kZT5gIHRvIGNvbnRpbnVlIHRoaXMg
cmVzcG9uc2UuIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBlcyI6IFsicGFnZSJdLAogICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0
SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3Ig
dGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxpZXIgPGNv
ZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBl
ZDc2M2MxMWViOTU2NDZmNjNlY2Y4ZGRhNzA4YWI4ODQxNGYzMjkwLi42Y2I1OWVjZWVhNGViMmU4
MTY1ZTk1OTY0NDgzNzY2NTYxMWZhOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODExLDEwICs4MTEsMTcg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3Vy
Y2VJbXBsKENhY2hlZFJlc291cmNlJiBjYWMKICAgICB9CiB9CiAKLWJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQor
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCi0gICAgICAgIHJldHVybiBuZXR3b3JrQWdlbnQt
PndpbGxJbnRlcmNlcHRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm4gbmV0d29ya0Fn
ZW50LT53aWxsSW50ZXJjZXB0KHJlcXVlc3QpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCisgICAgICAgIHJldHVybiBuZXR3b3Jr
QWdlbnQtPnNob3VsZEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC04MjUsNiArODMyLDEyIEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNl
cHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQorICAgICAgICBuZXR3
b3JrQWdlbnQtPmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30K
Kwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+
JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYzdiNjZiYTExNTVkOTFi
M2M1ZTBlMzEyZTE0YmQyZmU3MzI4NmQyNS4uZGY5MzkwNWI0NWJhZTRjNzRhNzFkMWVhZTg5YzEy
NWUwMTgzYTIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RS
ZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWMuaCIKICNp
bmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJT
dG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIldvcmtl
ckluc3BlY3RvclByb3h5LmgiCkBAIC0yMzQsOCArMjM1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2Um
KTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdChj
b25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHNo
b3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1
ZXN0KFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAg
LTQ0Miw4ICs0NDUsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIHdpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJik7CiAKLSAgICBzdGF0aWMg
Ym9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIFJlc291cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVz
c2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC0xMjU3LDExICsxMjYyLDE5IEBAIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZSYKICAgICB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChjYWNo
ZWRSZXNvdXJjZSk7CiB9CiAKLWlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxJbnRlcmNlcHQoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKICAgICBp
ZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFt
ZShmcmFtZSkpCi0gICAgICAgIHJldHVybiB3aWxsSW50ZXJjZXB0UmVxdWVzdEltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOworICAgICAgICByZXR1cm4gd2lsbEludGVyY2VwdElt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWM6Omhhc0Zyb250
ZW5kcygpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCkBAIC0xMjczLDYgKzEyODYsMTMgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7CisgICAg
QVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCgq
bG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShsb2FkZXIuZnJhbWUo
KSkpCisgICAgICAgIGludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQuY3BwCmluZGV4IDk1NGFhZjEyMWE5ZmE1MDdkODNiYzEwYWUzN2RlMWYxMjhmN2Rj
ZmMuLmUzOGVmMzk4ZTdlOWFmYzFlMDFhNTRiOWNlNjhmYzIzNTk4ZTkxNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQuY3BwCkBAIC0zMCwxMSArMzAsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Citib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQoreworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZElu
dGVyY2VwdFJlcXVlc3QoZnJhbWUsIHJlcXVlc3QpOworfQorCiBib29sIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBG
cmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJl
dHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZy
YW1lLCByZXNwb25zZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQorewor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdU
Rk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktp
dDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBiNjdlODliODBiNGU3YTg1ODZjYWM4MWFkZTVk
NThhMWJjYjBkNDMxLi5hMzJmODc3ZWFhMDRmMjdkMTIxMjcwY2ZmNWFjYzNiMDMyYzFjNmEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwxNCArMzYsMjcgQEAgY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQg
ewogcHVibGljOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3Qg
RnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAgICAgc3RhdGlj
IHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiBwcml2
YXRlOgorICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChjb25z
dCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3Vs
ZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291
cmNlTG9hZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KT4mJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBG
cmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKGZhbHNlKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFsKCpmcmFtZSwgcmVx
dWVzdCk7Cit9CisKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
ZmFsc2UpOwpAQCAtNTMsNiArNjYsMTIgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSoKICAgICBy
ZXR1cm4gc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlKTsK
IH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGxvYWRlci5m
cmFtZSgpLCBsb2FkZXIucmVxdWVzdCgpKSk7CisgICAgaW50ZXJjZXB0UmVxdWVzdEludGVybmFs
KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1l
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9u
c2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCAyY2Y0OTg4ZjEzMjIyYmU1NDE4YjBhMjMxMTZi
OGRjOTZiMWY4M2Y3Li5mMDQyZTJmNWM5YjA5YmI2NTFlOWJmOTI2NmEwNGMzY2ZkNzQ5ZGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKQEAg
LTQ2NSw2ICs0NjYsNyBAQCBzdGF0aWMgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUg
cmVzb3VyY2VUeXBlRm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzbwogewogICAgIGlmIChyZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6aW5zcGVjdG9yUmVzb3Vy
Y2VUeXBlKCpyZXNvdXJjZSk7CisKICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhl
clJlc291cmNlOwogfQogCkBAIC04NDAsMTIgKzg0MiwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5jbGVh
cigpOwogICAgIG1fZXh0cmFSZXF1ZXN0SGVhZGVycy5jbGVhcigpOwogCisgICAgY29udGludWVQ
ZW5kaW5nUmVxdWVzdHMoKTsKICAgICBjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsKIAogICAg
IHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGZhbHNlKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsKQorYm9vbCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdChVUkwgdXJsLCBOZXR3b3JrU3RhZ2UgbmV0d29ya1N0
YWdlKQogewogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAtODU0LDYg
Kzg1NywxMSBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVS
TCB1cmwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgaW50ZXJjZXB0
IDogbV9pbnRlcmNlcHRzKSB7CisgICAgICAgIGlmIChpbnRlcmNlcHQubmV0d29ya1N0YWdlICE9
IG5ldHdvcmtTdGFnZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoaW50ZXJj
ZXB0LnVybC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgICAgICBh
dXRvIHNlYXJjaFN0cmluZ1R5cGUgPSBpbnRlcmNlcHQuaXNSZWdleCA/IENvbnRlbnRTZWFyY2hV
dGlsaXRpZXM6OlNlYXJjaFN0cmluZ1R5cGU6OlJlZ2V4IDogQ29udGVudFNlYXJjaFV0aWxpdGll
czo6U2VhcmNoU3RyaW5nVHlwZTo6RXhhY3RTdHJpbmc7CiAgICAgICAgIGF1dG8gcmVnZXggPSBD
b250ZW50U2VhcmNoVXRpbGl0aWVzOjpjcmVhdGVSZWd1bGFyRXhwcmVzc2lvbkZvclNlYXJjaFN0
cmluZyhpbnRlcmNlcHQudXJsLCBpbnRlcmNlcHQuY2FzZVNlbnNpdGl2ZSwgc2VhcmNoU3RyaW5n
VHlwZSk7CiAgICAgICAgIGlmIChyZWdleC5tYXRjaCh1cmxTdHJpbmcpICE9IC0xKQpAQCAtODYz
LDYgKzg3MSwxMyBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0
KFVSTCB1cmwpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6Y29udGludWVQZW5kaW5nUmVxdWVzdHMoKQoreworICAgIGZvciAoYXV0byYgcGVuZGlu
Z1JlcXVlc3QgOiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy52YWx1ZXMoKSkKKyAgICAgICAg
cGVuZGluZ1JlcXVlc3QtPmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCgpOworICAgIG1fcGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3RzLmNsZWFyKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXNwb25zZXMoKQogewogICAgIGZvciAoYXV0byYgcGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlIDogbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnZhbHVl
cygpKQpAQCAtMTAyOCwxOCArMTA0MywxOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
c2V0SW50ZXJjZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvbwogCiAg
ICAgbV9pbnRlcmNlcHRpb25FbmFibGVkID0gZW5hYmxlZDsKIAotICAgIGlmICghbV9pbnRlcmNl
cHRpb25FbmFibGVkKQorICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKSB7CisgICAgICAg
IGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgICAgIGNvbnRpbnVlUGVuZGluZ1Jlc3Bv
bnNlcygpOworICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVy
Y2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdl
eCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpCit2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29s
KiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKIHsK
LSAgICBpZiAobmV0d29ya1N0YWdlU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gbmV0d29ya1N0YWdl
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm5l
dHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgIGlmICghbmV0d29ya1N0YWdlKSB7Ci0gICAgICAg
ICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29ya1N0YWdlOiAiX3Ms
ICpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cisg
ICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlPihuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgIGlmICghbmV0d29ya1N0
YWdlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3Jr
U3RhZ2U6ICJfcywgbmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIEludGVyY2VwdCBpbnRlcmNlcHQ7CkBAIC0xMDQ4LDIxICsxMDYzLDE4IEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpCiAgICAgICAgIGludGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAob3B0aW9uYWxJc1JlZ2V4KQogICAgICAgICBp
bnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElzUmVnZXg7Ci0KLSAgICAvLyBGSVhNRTogU3Vw
cG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisgICAgaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9
IG5ldHdvcmtTdGFnZS52YWx1ZSgpOwogCiAgICAgaWYgKCFtX2ludGVyY2VwdHMuYXBwZW5kSWZO
b3RDb250YWlucyhpbnRlcmNlcHQpKQotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcmNlcHQg
Zm9yIGdpdmVuIHVybCBhbmQgZ2l2ZW4gaXNSZWdleCBhbHJlYWR5IGV4aXN0cyJfczsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJjZXB0IGZvciBnaXZlbiB1cmwsIGdpdmVuIGlzUmVnZXgs
IGFuZCBnaXZlbiBzdGFnZSBhbHJlYWR5IGV4aXN0cyJfczsKIH0KIAotdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNv
bnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJp
bmcpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0
d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKIHsKLSAgICBpZiAobmV0d29ya1N0YWdlU3RyaW5nKSB7
Ci0gICAgICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVj
dG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZT4oKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgIGlm
ICghbmV0d29ya1N0YWdlKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmco
IlVua25vd24gbmV0d29ya1N0YWdlOiAiX3MsICpuZXR3b3JrU3RhZ2VTdHJpbmcpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPihuZXR3b3JrU3RhZ2VT
dHJpbmcpOworICAgIGlmICghbmV0d29ya1N0YWdlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0g
bWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgbmV0d29ya1N0YWdlU3RyaW5n
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVyY2VwdCBpbnRlcmNlcHQ7CkBA
IC0xMDcxLDE5ICsxMDgzLDI3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1vdmVJ
bnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTCiAgICAgICAgIGlu
dGVyY2VwdC5jYXNlU2Vuc2l0aXZlID0gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZTsKICAgICBpZiAo
b3B0aW9uYWxJc1JlZ2V4KQogICAgICAgICBpbnRlcmNlcHQuaXNSZWdleCA9ICpvcHRpb25hbElz
UmVnZXg7Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRlcmNlcHRpbmcgcmVxdWVzdHMuCisg
ICAgaW50ZXJjZXB0Lm5ldHdvcmtTdGFnZSA9IG5ldHdvcmtTdGFnZS52YWx1ZSgpOwogCiAgICAg
aWYgKCFtX2ludGVyY2VwdHMucmVtb3ZlQWxsKGludGVyY2VwdCkpCi0gICAgICAgIGVycm9yU3Ry
aW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBnaXZlbiB1cmwgYW5kIGdpdmVuIGlzUmVnZXgi
X3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaW50ZXJjZXB0IGZvciBnaXZlbiB1
cmwsIGdpdmVuIGlzUmVnZXgsIGFuZCBnaXZlbiBzdGFnZSBhbHJlYWR5IGV4aXN0cyJfczsKK30K
KworYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVl
c3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVxdWVzdCkKKyAgICAgICAgfHwgc2hvdWxkSW50ZXJj
ZXB0KHJlcXVlc3QudXJsKCksIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UpOwogfQogCi1ib29sIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVy
Y2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICgh
bV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCkpOworICAgIHJldHVybiBzaG91bGRJbnRl
cmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KTsKIH0KIAogYm9vbCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTA5MSw3ICsxMTExLDIxIEBAIGJvb2wgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwCiAgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVzcG9uc2UudXJsKCkp
OworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVzcG9uc2UudXJsKCksIE5ldHdvcmtTdGFn
ZTo6UmVzcG9uc2UpOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGhhbmRsZXIpCit7CisgICAgQVNTRVJUKG1fZW5hYmxl
ZCk7CisgICAgQVNTRVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CisKKyAgICBTdHJpbmcgcmVx
dWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQobG9hZGVyLmlkZW50aWZpZXIo
KSk7CisgICAgaWYgKG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLmNvbnRhaW5zKHJlcXVlc3RJ
ZCkpIHsKKyAgICAgICAgaGFuZGxlcihsb2FkZXIucmVxdWVzdCgpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy5zZXQocmVxdWVzdElkLCBt
YWtlVW5pcXVlPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0PigmbG9hZGVyLCBXVEZNb3ZlKGhhbmRs
ZXIpKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1
ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQpAQCAtMTExMSwxNSArMTE0NSw2MyBAQCB2b2lkIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlSW50ZXJjZXB0
ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsIG51
bGxwdHIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdENvbnRp
bnVlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBuZXR3
b3JrU3RhZ2VTdHJpbmcpCiB7Ci0gICAgYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBt
X3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXMudGFrZShyZXF1ZXN0SWQpOwotICAgIGlmICghcGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
cGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICBh
dXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6
OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpO
ZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2Up
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFn
ZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3dpdGNoIChuZXR3b3JrU3RhZ2UudmFsdWUoKSkgeworICAgIGNhc2UgTmV0d29ya1N0YWdl
OjpSZXF1ZXN0OgorICAgICAgICBpZiAoYXV0byBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCA9IG1f
cGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKSkKKyAgICAgICAgICAgIHBl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0LT5jb250aW51ZVdpdGhPcmlnaW5hbFJlcXVlc3QoKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGlu
dGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIE5ldHdvcmtTdGFnZTo6UmVzcG9uc2U6CisgICAgICAgIGlmIChhdXRvIHBlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJl
cXVlc3RJZCkpCisgICAgICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRX
aXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJvclN0
cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlc3BvbnNlIGZvciBnaXZlbiByZXF1
ZXN0SWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVxdWVz
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcqIG1ldGhvZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpTT046Ok9iamVjdCog
aGVhZGVycywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1
ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlm
IChwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcGVu
ZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOworICAgICAgICBpZiAodXJsKQorICAgICAgICAgICAg
cmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgKnVybCkpOworICAgICAgICBpZiAobWV0aG9kKQorICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCptZXRob2QpOworICAgICAgICBpZiAoaGVh
ZGVycykgeworICAgICAgICAgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIFtrZXksIHZhbHVlXSA6ICpoZWFkZXJzKSB7CisgICAgICAgICAg
ICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+YXNT
dHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMu
YWRkKGtleSwgaGVhZGVyVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHBvc3REYXRhKSB7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4g
YnVmZmVyOworICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoKnBvc3REYXRhLCBidWZmZXIp
KSB7CisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGRlY29kZSBnaXZl
biBwb3N0RGF0YSJfczsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoYnVmZmVyKSk7
CisgICAgICAgIH0KKyAgICAgICAgcGVuZGluZ1JlcXVlc3QtPmNvbnRpbnVlV2l0aFJlcXVlc3Qo
cmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwZW5kaW5nSW50ZXJjZXB0
UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOworICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3Bv
bnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcqIG1p
bWVUeXBlLCBjb25zdCBpbnQqIHN0YXR1cywgY29uc3QgU3RyaW5nKiBzdGF0dXNUZXh0LCBjb25z
dCBKU09OOjpPYmplY3QqIGhlYWRlcnMpCkBAIC0xMTU4LDYgKzEyNDAsNyBAQCB2b2lkIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29ucwogICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNw
b25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQorCiAgICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNvbnRlbnQudXRmOCgpLmRhdGEoKSwgY29udGVudC51dGY4KCkubGVuZ3RoKCkp
OwpAQCAtMTE2NSw2ICsxMjQ4LDkyIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAgICAgcGVu
ZGluZ0ludGVyY2VwdFJlc3BvbnNlLT5yZXNwb25kKG92ZXJyaWRlUmVzcG9uc2UsIG92ZXJyaWRl
RGF0YSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIGNv
bnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0g
bV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlmICghcGVu
ZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGlu
dGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHBlbmRpbmdSZXF1
ZXN0LT5tX2xvYWRlci5nZXQoKTsKKyAgICBpZiAoIWxvYWRlci0+aWRlbnRpZmllcigpKSB7Cisg
ICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBh
bHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBpZiAoYmFzZTY0RW5jb2RlZCkgeworICAg
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICBpZiAoIWJhc2U2NERlY29kZShj
b250ZW50LCBidWZmZXIpKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8g
ZGVjb2RlIGdpdmVuIGNvbnRlbnQiX3M7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LnV0
ZjgoKS5kYXRhKCksIGNvbnRlbnQudXRmOCgpLmxlbmd0aCgpKTsKKworICAgIC8vIE1pbWljIGRh
dGEgVVJMIGxvYWQgYmVoYXZpb3IgLSByZXBvcnQgZGlkUmVjZWl2ZVJlc3BvbnNlICYgZGlkRmlu
aXNoTG9hZGluZy4KKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHBlbmRpbmdSZXF1ZXN0
LT5tX2xvYWRlci0+dXJsKCksIG1pbWVUeXBlLCBkYXRhLT5zaXplKCksIFN0cmluZygpKTsKKyAg
ICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpJbnNwZWN0b3JP
dmVycmlkZSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsKKyAgICBy
ZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNUZXh0KTsKKyAgICBIVFRQSGVhZGVyTWFw
IGV4cGxpY2l0SGVhZGVyczsKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpIHsKKyAg
ICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICBpZiAoaGVhZGVyLnZhbHVlLT5hc1N0
cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRkKGhlYWRl
ci5rZXksIGhlYWRlclZhbHVlKTsKKyAgICB9CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZp
ZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOworICAgIHJlc3BvbnNlLnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkp
OworICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZm
ZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChidWZm
ZXItPnNpemUoKSkKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAg
ICAgICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAg
IH0pOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdp
dGhFcnJvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZVN0cmluZykKK3sKKyAgICBhdXRvIHBlbmRpbmdSZXF1
ZXN0ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpOworICAgIGlm
ICghcGVuZGluZ1JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5k
aW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQiX3M7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBSZXNvdXJjZUxvYWRlciogbG9hZGVyID0gcGVuZGluZ1JlcXVl
c3QtPm1fbG9hZGVyLmdldCgpOworICAgIGlmICghbG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiVW5hYmxlIHRvIGFib3J0IHJlcXVlc3QsIGl0IGhhcyBhbHJl
YWR5IGJlZW4gcHJvY2Vzc2VkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3Vy
Y2VFcnJvclR5cGU+KGVycm9yVHlwZVN0cmluZyk7CisgICAgaWYgKCFlcnJvclR5cGUpIHsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGVycm9yVHlwZTogIl9zLCBl
cnJvclR5cGVTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVzb3VyY2VF
cnJvciBlcnJvcjsKKyAgICBzd2l0Y2ggKGVycm9yVHlwZS52YWx1ZSgpKSB7CisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6R2VuZXJhbDoK
KyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIGxvYWRlci0+dXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNvdXJjZUVycm9y
OjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNzQ29udHJvbDoKKyAgICAg
ICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGxv
YWRlci0+dXJsKCksICJBY2Nlc3MgZGVuaWVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nl
c3NDb250cm9sKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6Q2FuY2VsbGF0aW9uOgorICAgICAgICBlcnJv
ciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLT51
cmwoKSwgIlJlcXVlc3QgY2FuY2VsZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxh
dGlvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0
d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OlRpbWVvdXQ6CisgICAgICAgIGVycm9yID0gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXItPnVybCgpLCAiUmVx
dWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsb2FkZXItPmRpZEZhaWwoZXJyb3IpOworfQorCiBi
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIHsKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZSwgInRleHQvIikKQEAgLTExODEsNiArMTM1MCw3IEBAIFJlZjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKGNv
bnN0IFN0cmluZyYKIAogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSht
aW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUobWlt
ZVR5cGUsICJVVEYtOCIpOworCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5
cGUobWltZVR5cGUpKSB7CiAgICAgICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIl9zKTsKICAgICAgICAgZGVjb2Rlci0+dXNlTGVu
aWVudFhNTERlY29kaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBiZmQxMzFlOWI1ODU2Yzg0ZGE3
NzI0ODA1ZTcxMzk3YjdjNzQ4NmE5Li5iNDI1OWI2OTk1MDFlMDBlYjVlMzRhYmRhZTNlM2Y5OGNl
MDkyZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTg4LDEwICs4OCwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgU3RyaW5nKiBzZXJpYWxpemVkQ2VydGlmaWNhdGUpIGZpbmFsOwogICAgIHZv
aWQgcmVzb2x2ZVdlYlNvY2tldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIGZpbmFsOwogICAgIHZvaWQgc2V0SW50ZXJjZXB0aW9u
RW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgZmluYWw7Ci0gICAgdm9pZCBhZGRJ
bnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCog
Y2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3Jr
U3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsK
LSAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQpIGZpbmFsOworICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25z
dCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4KSBmaW5hbDsKKyAgICB2
b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2
ZSwgY29uc3QgYm9vbCogaXNSZWdleCkgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRDb250aW51
ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG5l
dHdvcmtTdGFnZVN0cmluZykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVxdWVzdChF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG1ldGhv
ZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycywgY29uc3Qg
U3RyaW5nKiBwb3N0RGF0YSkgZmluYWw7CiAgICAgdm9pZCBpbnRlcmNlcHRXaXRoUmVzcG9uc2Uo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGlu
dCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCog
aGVhZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBpbnQgc3RhdHVz
LCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCYgaGVhZGVycykg
ZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKSBmaW5hbDsK
IAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgd2lsbFJlY2FsY3Vs
YXRlU3R5bGUoKTsKQEAgLTExOCw5ICsxMjEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgbWFpbkZy
YW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyJik7CiAgICAgdm9pZCBzZXRJbml0aWFsU2NyaXB0
Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3Ry
aW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50Jik7
Ci0gICAgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
KyAgICBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJv
b2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKICAgICB2b2lkIHNlYXJjaElu
UmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCwgUmVmUHRyPEpTT046
OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+
Jik7CkBAIC0xNDAsNyArMTQ1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAKLSAgICBib29sIHNob3VsZEludGVyY2VwdChV
UkwpOworICAgIHVzaW5nIE5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6Ok5ldHdvcmtTdGFnZTsKKyAgICBib29sIHNob3VsZEludGVyY2VwdChVUkwsIE5ldHdvcmtT
dGFnZSk7CisgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIHZvaWQgY29u
dGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAKICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldEZvclJl
cXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CkBAIC0xNTMsNiArMTYwLDMxIEBAIHBy
aXZhdGU6CiAKICAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAKKyAgICBjbGFzcyBQZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRl
cmNlcHRSZXF1ZXN0KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVi
bGljOgorICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdChSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+IGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIDogbV9sb2FkZXIobG9hZGVyKQor
ICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKQorICAgICAgICB7IH0KKworICAgICAgICB2b2lkIGNvbnRpbnVlV2l0aE9yaWdpbmFsUmVx
dWVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9sb2FkZXItPnJlYWNoZWRUZXJt
aW5hbFN0YXRlKCkpCisgICAgICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihtX2xvYWRl
ci0+cmVxdWVzdCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY29udGludWVXaXRoUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fY29tcGxldGlvbkhhbmRsZXIocmVxdWVzdCk7CisgICAgICAgIH0KKworICAgICAgICBQ
ZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCgpID0gZGVmYXVsdDsKKyAgICAgICAgUmVmUHRyPFJlc291
cmNlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICB9OworCiAgICAg
Y2xhc3MgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC0yMDQsMTUgKzIzNiwxOCBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcg
dXJsOwogICAgICAgICBib29sIGNhc2VTZW5zaXRpdmUgeyB0cnVlIH07CiAgICAgICAgIGJvb2wg
aXNSZWdleCB7IGZhbHNlIH07CisgICAgICAgIE5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UgeyBO
ZXR3b3JrU3RhZ2U6OlJlc3BvbnNlIH07CiAKICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJbnRlcmNlcHQmIG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gdXJsID09IG90aGVyLnVybAogICAgICAgICAgICAgICAgICYmIGNhc2VTZW5zaXRpdmUg
PT0gb3RoZXIuY2FzZVNlbnNpdGl2ZQotICAgICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3Ro
ZXIuaXNSZWdleDsKKyAgICAgICAgICAgICAgICAmJiBpc1JlZ2V4ID09IG90aGVyLmlzUmVnZXgK
KyAgICAgICAgICAgICAgICAmJiBuZXR3b3JrU3RhZ2UgPT0gb3RoZXIubmV0d29ya1N0YWdlOwog
ICAgICAgICB9CiAgICAgfTsKICAgICBWZWN0b3I8SW50ZXJjZXB0PiBtX2ludGVyY2VwdHM7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVxdWVz
dD4+IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6
OnVuaXF1ZV9wdHI8UGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlPj4gbV9wZW5kaW5nSW50ZXJjZXB0
UmVzcG9uc2VzOwogCiAgICAgLy8gRklYTUU6IEluc3BlY3Rvck5ldHdvcmtBZ2VudCBzaG91bGQg
bm90IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3ODczYmY5
OWJkMjM0OTY2NDhjYmMzNDQ3MDQ4ODE4MjE1ODk0YzgxLi4zYTcxMTI3N2E4YWE3YzRmMDM1OTBj
MmZlNTc4M2EyNGFmODJhNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg0MSw3ICs4NDEsNyBAQCBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdQogCiAgICAgcmVxdWVzdC51cGRhdGVSZWZlcnJlclBvbGljeShkb2N1
bWVudCgpID8gZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA6IFJlZmVycmVyUG9saWN5OjpO
b1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdCgmZnJhbWUsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQoJmZy
YW1lLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmVxdWVzdC5zZXRDYWNo
aW5nUG9saWN5KENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZyk7CiAKICAgICBhdXRvJiBw
YWdlID0gKmZyYW1lLnBhZ2UoKTsKQEAgLTE0MzEsNyArMTQzMSw3IEBAIFZlY3RvcjxSZWY8U1ZH
SW1hZ2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsQ2FjaGVkU1ZHSW1hZ2VzKCkgY29uc3QK
IAogUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4g
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChmcmFtZSgpLCByZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50
ZXJjZXB0KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksICJJbnNwZWN0b3IgaW50ZXJj
ZXB0Il9zIH0pOwogCiAgICAgaWYgKHJlcXVlc3QuY2hhcnNldCgpLmlzRW1wdHkoKSAmJiAodHlw
ZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5q
cwppbmRleCA3ZGUzY2QyNTM5ZmMzZTZmOGI2Njk3MjQzYTM3ODk1N2E1NTJhNTQ1Li5hMzM4NzM0
NDdjOTBlYzY0M2JlZTMzMzE1YjNjOTJhZDFmYmZiYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3
b3JrTWFuYWdlci5qcwpAQCAtMTU5LDkgKzE1OSw5IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xh
c3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUuZGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUudXJsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0u
TmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJp
ZGUuaXNSZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IElu
c3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMzY0LDcgKzM2NCw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0
d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB1cmw6IGxvY2Fs
UmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTogbG9j
YWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgICAgICBpc1Jl
Z2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAgICAgICBuZXR3
b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNw
b25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdv
cmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAg
Ly8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLmFkZEludGVyY2VwdGlvbiBkaWQg
bm90IGV4aXN0LgpAQCAtMzk3LDcgKzM5Nyw3IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3Mg
TmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB1cmw6IGxv
Y2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTog
bG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgICAgICBp
c1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAgICAgICBu
ZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5S
ZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5l
dHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsKIAogICAgICAgICAg
ICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlv
biBkaWQgbm90IGV4aXN0LgpAQCAtOTA4LDEyICs5MDgsMjEgQEAgV0kuTmV0d29ya01hbmFnZXIg
PSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9y
ZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmRlbGV0ZShyZXF1ZXN0SWRlbnRpZmllcik7CiAg
ICAgfQogCisgICAgcmVxdWVzdEludGVyY2VwdGVkKHRhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0
KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGFkZCByZXF1ZXN0IGludGVyY2VwdGlvbiBzdXBw
b3J0IHRvIHRoZSBmcm9udGVuZC4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCB7dGFyZ2V0LCBy
ZXF1ZXN0SWQsIHJlcXVlc3R9KTsKKyAgICB9CisKICAgICByZXNwb25zZUludGVyY2VwdGVkKHRh
cmdldCwgcmVxdWVzdElkLCByZXNwb25zZSkKICAgICB7CiAgICAgICAgIGxldCB1cmwgPSBXSS51
cmxXaXRob3V0RnJhZ21lbnQocmVzcG9uc2UudXJsKTsKICAgICAgICAgbGV0IGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZSA9IHRoaXMubG9jYWxSZXNvdXJjZU92ZXJyaWRlRm9yVVJMKHVybCk7CiAgICAg
ICAgIGlmICghbG9jYWxSZXNvdXJjZU92ZXJyaWRlIHx8IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5k
aXNhYmxlZCkgewotICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRDb250
aW51ZShyZXF1ZXN0SWQpOworICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNl
cHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAg
ICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdl
LlJlc3BvbnNlLAorICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMTM3Niw3ICsxMzg1LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3
b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291
cmNlT3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJj
ZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVz
b3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgbmV0d29ya1N0YWdlOiBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAg
ICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3Bv
bnNlLAogICAgICAgICB9OwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTog
TmV0d29yay5hZGRJbnRlcmNlcHRpb24gLyBOZXR3b3JrLnJlbW92ZUludGVyY2VwdGlvbiBkaWQg
bm90IGV4aXN0LgpAQCAtMTQzMiw0ICsxNDQxLDUgQEAgV0kuTmV0d29ya01hbmFnZXIuRXZlbnQg
PSB7CiAgICAgQm9vdHN0cmFwU2NyaXB0RGVzdHJveWVkOiAibmV0d29yay1tYW5hZ2VyLWJvb3Rz
dHJhcC1zY3JpcHQtZGVzdHJveWVkIiwKICAgICBMb2NhbFJlc291cmNlT3ZlcnJpZGVBZGRlZDog
Im5ldHdvcmstbWFuYWdlci1sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1hZGRlZCIsCiAgICAgTG9j
YWxSZXNvdXJjZU92ZXJyaWRlUmVtb3ZlZDogIm5ldHdvcmstbWFuYWdlci1sb2NhbC1yZXNvdXJj
ZS1vdmVycmlkZS1yZW1vdmVkIiwKKyAgICBSZXF1ZXN0SW50ZXJjZXB0ZWQ6ICJuZXR3b3JrLW1h
bmFnZXItcmVxdWVzdC1pbnRlcmNlcHRlZCIKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIu
anMKaW5kZXggNTljMjljOWEzODRiMDQ3OGRkOGQ2ZDBjZjU5MjhiNjI5ODE4MDBhYS4uZmU4ODI5
YTcxYmZkMGVlZDg1NmI0MWMzYWFlY2U2YWU3ZjFhMTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtP
YnNlcnZlci5qcwpAQCAtMTA4LDYgKzEwOCwxMSBAQCBXSS5OZXR3b3JrT2JzZXJ2ZXIgPSBjbGFz
cyBOZXR3b3JrT2JzZXJ2ZXIgZXh0ZW5kcyBJbnNwZWN0b3JCYWNrZW5kLkRpc3BhdGNoZXIKICAg
ICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KICAgICB9CiAKKyAgICByZXF1ZXN0SW50
ZXJjZXB0ZWQocmVxdWVzdElkLCByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgV0kubmV0d29ya01h
bmFnZXIucmVxdWVzdEludGVyY2VwdGVkKHRoaXMuX3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0
KTsKKyAgICB9CisKICAgICByZXNwb25zZUludGVyY2VwdGVkKHJlcXVlc3RJZCwgcmVzcG9uc2Up
CiAgICAgewogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNwb25zZUludGVyY2VwdGVkKHRo
aXMuX3RhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMGRkYjM1
MzM0NDM4Nzg0ZmIyMTZmZGY3MTA4NDI5NzI2ZjJjNjY2Ny4uZjA3ZTVhMzIxNWVhYzNlZjBjMDIw
Yjg0MzVkNTZhOWJhYjM2ZjcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVsZW1lbnQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtMb2FkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2ll
cy5oPgpAQCAtMjI4LDggKzIyOSwxNCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAg
aWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyLCB0cmFj
a2luZ1BhcmFtZXRlcnMpKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhl
IE5ldHdvcmtQcm9jZXNzIik7CisKKyAgICAgICAgaWYgKCFyZXNvdXJjZUxvYWRlci5vcHRpb25z
KCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgJiYgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9hZGVyLmZy
YW1lKCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChyZXNvdXJjZUxvYWRlciwg
W3RoaXMsIHByb3RlY3RlZFJlc291cmNlTG9hZGVyID0gbWFrZVJlZlB0cigmcmVzb3VyY2VMb2Fk
ZXIpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIHJlc291cmNlXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIHsKKyAg
ICAgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoKnByb3RlY3RlZFJl
c291cmNlTG9hZGVyLCByZXF1ZXN0LCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNl
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAg
ICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkp
OwotICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhh
bmRsZXJzIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZTBkNDE1YWMzMmU4NzI0YmRkZTRmNGY1NzFlMWJjY2NlYjhlZmIz
Yi4uZjUxOWY3ZjQxOThkY2JmYTJmY2E0OTgxYjczMGMzMjk2ZmRhNDhkYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDIwLTA2LTAzICBQYXZlbCAgPHBhdmVsLmZlbGRtYW5AZ21haWwuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3b3Jr
CisgICAgICAgIHByb3RvY29sIGRvbWFpbi4gSXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhS
ZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0CisgICAgICAgIGNhbiBiZSBjb250aW51ZWQsIG1vZGlm
aWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0YWdlIGVudW0gY2FuIG5vdyBoYXZlCisgICAgICAg
ICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2YWx1ZXMuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1hYm9ydGVkLXJlcXVlc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3QtY29udGludWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Uu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291
cmNlLXdpdGgtZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJy
b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3Vy
Y2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRo
LXJlc3BvbnNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3Zl
cnJpZGVuLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qczog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29s
LXRlc3QuanM6CisgICAgICAgICogaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3Zl
cnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uOiBBZGRlZC4KKwogMjAyMC0wNi0xMSAg
T3Jpb2wgQnJ1ZmF1ICA8b2JydWZhdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZ3JpZF0g
UmVpbXBvcnQgV1BUIHRlc3RzIHJlbW92ZWQgaW4gcjI2MjgwOQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1
ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQw
ZjIwY2I2YzE0NmE3M2YyZmFjMGMzNzQ4YmNmNmM4ZTU0ZjI1MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0
ZWQtcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorQUxFUlQ6IERFRkFVTFQg
b3ZlcnJpZGUuanMgVEVYVAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWpl
Y3Rpb246IEFib3J0RXJyb3I6IEZldGNoIGlzIGFib3J0ZWQKK0NPTlNPTEUgTUVTU0FHRTogVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiBBYm9ydEVycm9yOiBGZXRjaCBpcyBhYm9ydGVkCitU
ZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9mIHRoZSBhYm9ydGVkIHJlcXVlc3QuCisKKworPT0g
UnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBzZXRVcAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5BYm9ydGVkCitUcmlnZ2VyaW5nIGxvYWQu
Li4KK1JlY2VpdmVkIGVycm9yOiBFcnJvcjogVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQg
aGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvci5BYm9ydGVkCitUcmlnZ2VyaW5nIGxvYWQuLi4K
K1JlY2VpdmVkIGVycm9yOiBFcnJvcjogVW5hYmxlIHRvIGFib3J0IHJlcXVlc3QsIGl0IGhhcyBh
bHJlYWR5IGJlZW4gcHJvY2Vzc2VkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1y
ZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVmMjUwNjE4YzczYTAxMGFlMjI5MWY4Y2YwOTFiNjZl
NTFiOWI4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sCkBAIC0wLDAgKzEsMTAx
IEBACisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKworYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbmRBYm9ydCgpIHsKKyAgICBs
ZXQgdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvb3ZlcnJpZGUudHh0IjsKKyAgICBsZXQgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xs
ZXIoKTsKKyAgICBsZXQgeyBzaWduYWwgfSA9IGNvbnRyb2xsZXI7CisgICAgZmV0Y2godXJsLCB7
IHNpZ25hbCB9KTsKKyAgICBjb250cm9sbGVyLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIEluc3BlY3RvclRlc3QuZGVidWcoKTsKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0
b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNw
b25zZSIpOworICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogInNldFVwIiwKKyAgICAgICAgYXN5
bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50
ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQiLAorICAgICAg
ICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3Rh
Z2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVl
c3RXaXRoUmVzcG9uc2UuQWJvcnRlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVx
dWVzdCBpbnRlcmNlcHRpb24gdGhhdCBmdWxmaWxscyBhYm9ydGVkIHJlcXVlc3QiLAorICAgICAg
ICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IGNhbGxiYWNrOworICAgICAgICAgICAg
bGV0IGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2VSZXN1bHQgPSBuZXcgUHJvbWlzZShmID0+
IGNhbGxiYWNrID0gIGYpOworICAgICAgICAgICAgbGV0IGludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UgPSBhc3luYyAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgeyB0YXJnZXQs
IHJlcXVlc3RJZCwgcmVxdWVzdCB9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICB0cnkg
eworICAgICAgICAgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2Vw
dFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5k
LkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRlbnQ6ICJQQVNTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29k
ZWQ6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWlu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRl
cnM6IHt9LAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGUpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBp
bnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgIHRhcmdldC5SdW50aW1lQWdl
bnQuZXZhbHVhdGUoImZldGNoQW5kQWJvcnQoKSIpOworICAgICAgICAgICAgY29uc3QgZXJyb3Ig
PSBhd2FpdCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlUmVzdWx0OworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coJ1JlY2VpdmVkIGVycm9yOiAnICsgZXJyb3IpOworICAgICAgICAg
ICAgV0kubmV0d29ya01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdl
ci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Up
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IuQWJvcnRlZCIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCByZWplY3Rz
IGFib3J0ZWQgcmVxdWVzdCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBs
ZXQgY2FsbGJhY2s7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25z
ZVJlc3VsdCA9IG5ldyBQcm9taXNlKGYgPT4gY2FsbGJhY2sgPSAgZik7CisgICAgICAgICAgICBs
ZXQgaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSA9IGFzeW5jIChldmVudCkgPT4geworICAg
ICAgICAgICAgICAgIGxldCB7IHRhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0IH0gPSBldmVudC5k
YXRhOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRh
cmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvci5pbnZva2UoeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3JUeXBlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlw
ZS5HZW5lcmFsLAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGUpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVk
LCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgIHRhcmdldC5SdW50aW1l
QWdlbnQuZXZhbHVhdGUoImZldGNoQW5kQWJvcnQoKSIpOworICAgICAgICAgICAgY29uc3QgZXJy
b3IgPSBhd2FpdCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlUmVzdWx0OworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coJ1JlY2VpdmVkIGVycm9yOiAnICsgZXJyb3IpOworICAgICAg
ICAgICAgV0kubmV0d29ya01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9u
c2UpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5p
c2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
PHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBvZiB0aGUgYWJvcnRlZCByZXF1ZXN0LjwvcD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTZlZjNhZTI4YWU4ZDY3YjE5ZGRiMTg2MjI1N2U1
NGYwZDQwNjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxOSBAQAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyBy
ZXF1ZXN0LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRDb250
aW51ZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jl
c3BvbnNlIGNvbnRlbnQ6CitmdW5jdGlvbiBteVNjcmlwdEpTKCkge30KKworCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlV3JvbmdTdGFnZQor
VHJpZ2dlcmluZyBsb2FkLi4uCitSZWNlaXZlZCBlcnJvcjogRXJyb3I6IE1pc3NpbmcgcGVuZGlu
ZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZAorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlV3JvbmdJZAorVHJpZ2dl
cmluZyBsb2FkLi4uCitSZWNlaXZlZCBlcnJvcjogRXJyb3I6IE1pc3NpbmcgcGVuZGluZyBpbnRl
cmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGlu
dWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtY29udGludWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWNjYzliOTFmZDMxNGZjMmZm
ODJjMjEzMWExYzAzZGFhM2JlNWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1s
CkBAIC0wLDAgKzEsMTExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiBmZXRjaERhdGEodXJs
KQoreworICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCk7CisgICAgcmV0dXJuIGF3
YWl0IHJlc3BvbnNlLnRleHQoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdENv
bnRpbnVlIik7CisgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAic2V0VXAiLAorICAgICAgICBh
c3luYyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJ
bnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NjcmlwdC5qcyIsCisgICAgICAg
ICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFn
ZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dC5Db250aW51ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBpbnRlcmNl
cHRpb24gdGhhdCBjb250aW51ZXMiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAg
ICAgbGV0IGludGVyY2VwdENvbnRpbnVlID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
bGV0IHsgdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QgfSA9IGV2ZW50LmRhdGE7CisgICAgICAg
ICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRDb250aW51ZS5pbnZva2Uoewor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHN0YWdl
OiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIFdJLm5ldHdv
cmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVz
dEludGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQgcmVzcG9uc2Ug
PSBhd2FpdCB0YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlKCJmZXRjaERhdGEoJ3Jlc291cmNl
cy9zY3JpcHQuanMnKSIpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0YXJnZXQuUnVu
dGltZUFnZW50LmF3YWl0UHJvbWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0SWQsIHRydWUpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlc3BvbnNlIGNvbnRlbnQ6Iik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhyZXNwb25zZS5yZXN1bHQudmFsdWUpOworICAgICAg
ICAgICAgV0kubmV0d29ya01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdENvbnRpbnVlKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlV3JvbmdTdGFnZSIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCBjb250aW51ZXMgd2l0
aCB0aGUgd3Jvbmcgc3RhZ2UiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAg
bGV0IGNhbGxiYWNrOworICAgICAgICAgICAgbGV0IGludGVyY2VwdENvbnRpbnVlUmVzdWx0ID0g
bmV3IFByb21pc2UoZiA9PiBjYWxsYmFjayA9ICBmKTsKKyAgICAgICAgICAgIGxldCBpbnRlcmNl
cHRDb250aW51ZSA9IGFzeW5jIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7IHRh
cmdldCwgcmVxdWVzdElkLCByZXF1ZXN0IH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmludGVy
Y2VwdENvbnRpbnVlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAor
ICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29y
ay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBXSS5uZXR3b3Jr
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJ
bnRlcmNlcHRlZCwgaW50ZXJjZXB0Q29udGludWUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgdGFyZ2V0LlJ1bnRpbWVB
Z2VudC5ldmFsdWF0ZSgiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvc2NyaXB0LmpzJykiKTsKKyAgICAg
ICAgICAgIGNvbnN0IGVycm9yID0gYXdhaXQgaW50ZXJjZXB0Q29udGludWVSZXN1bHQ7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygnUmVjZWl2ZWQgZXJyb3I6ICcgKyBlcnJvcik7Cisg
ICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk5ldHdv
cmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0Q29udGludWUpOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWVXcm9uZ0lkIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyB3
aXRoIHRoZSB3cm9uZyBzdGFnZSIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICBsZXQgY2FsbGJhY2s7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0Q29udGludWVSZXN1bHQg
PSBuZXcgUHJvbWlzZShmID0+IGNhbGxiYWNrID0gIGYpOworICAgICAgICAgICAgbGV0IGludGVy
Y2VwdENvbnRpbnVlID0gYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHsg
dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QgfSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuaW50
ZXJjZXB0Q29udGludWUuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6
ICd3cm9uZ0lkJywKKyAgICAgICAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2Vu
ZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2
ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0Q29udGludWUpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgdGFy
Z2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvc2NyaXB0Lmpz
JykiKTsKKyAgICAgICAgICAgIGNvbnN0IGVycm9yID0gYXdhaXQgaW50ZXJjZXB0Q29udGludWVS
ZXN1bHQ7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygnUmVjZWl2ZWQgZXJyb3I6ICcg
KyBlcnJvcik7CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0
Q29udGludWUpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNB
bmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyByZXF1ZXN0
LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMTI1
OTA0ODM1ZWYxMGI2YzA2MDM0ZjYxNWYzZGVmMTE4ZjllYWMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQUxFUlQ6IE9SSUdJ
TkFMIEhUTUwgQ09OVEVOVAorQUxFUlQ6IFJFUExBQ0VEIEhUTUwgQ09OVEVOVAorT3ZlcnJpZGRl
biBwYWdlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MjEyNTkwNDgzNWVmMTBiNmMwNjAzNGY2MTVmM2RlZjExOGY5ZWFjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorQUxFUlQ6IE9SSUdJTkFMIEhUTUwgQ09OVEVOVAorQUxFUlQ6
IFJFUExBQ0VEIEhUTUwgQ09OVEVOVAorT3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Ut
d2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NjA4ODk1ZTk4ZDFkYmE4ZjU2YzU5OGI1
NTllNzI4ODIwOTliYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1y
ZXNwb25zZS5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWFpblJlc291cmNl
IHdpdGggcmVzcG9uc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIk1haW4gcmVzb3VyY2UgdXNl
cyByZXF1ZXN0IGludGVyY2VwdGlvbiBvbiBuZXh0IHBhZ2UgbG9hZCBhbmQgZnVsZmlsbHMgcmVx
dWVzdCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0g
V0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29y
a0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1t
YWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6
IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRXaXRoUmVzcG9uc2UgPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1
ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2h0bWwiLAor
ICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9gK2BzY3JpcHQ+
PC9oZWFkPjxib2R5PjxwPk92ZXJyaWRkZW4gcGFnZSBjb250ZW50PC9wPjxzY3JpcHQ+YWxlcnQo
IlJFUExBQ0VEIEhUTUwgQ09OVEVOVCIpOyBUZXN0UGFnZS5jb21wbGV0ZVRlc3QoKTs8L2ArYHNj
cmlwdD48L2JvZHk+PC9odG1sPmAsCisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6
IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30s
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgV0kubmV0
d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1
ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdFdpdGhSZXNwb25zZSk7CisKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxs
UmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0
aGUgbWFpbiByZXNvdXJjZSBsb2FkIHdpdGggcmVzcG9uc2UuPC9wPgorPHNjcmlwdD5hbGVydCgi
T1JJR0lOQUwgSFRNTCBDT05URU5UIik7PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY3MTRhNjhhZTEzN2Y1MDJiMWI3NGQyNWYzNWYwYmNmY2E5ZTVhZmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0
ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5N
YWluUmVzb3VyY2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIk1haW4gcmVzb3VyY2UgdXNlcyBy
ZXF1ZXN0IGludGVyY2VwdGlvbiBvbiBuZXh0IHBhZ2UgbG9hZCIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7
CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5p
bnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLmh0bWwiLAorICAg
ICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3Jr
U3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgaW50ZXJj
ZXB0V2l0aFJlcXVlc3QgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3Rhcmdl
dCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdGFy
Z2V0Lk5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2UoeworICAgICAgICAg
ICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1wYWdlLmh0bWwiLAorICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0SWQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5l
dHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVl
c3QpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hl
OiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVy
Y2VwdGlvbiBpbnRlcmNlcHRpbmcgdGhlIG1haW4gcmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0
PmFsZXJ0KCJPUklHSU5BTCBIVE1MIENPTlRFTlQiKTs8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiNzQ1MzM0MGUzMTliYjEyYmNmZjQwNWIxNTEwNDMz
ZDQxN2Y0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsODQgQEAKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gYWx0ZXJpbmcgcmVxdWVz
dCBwcm9wZXJ0aWVzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNl
cHRXaXRoUmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZAorVHJpZ2dlcmluZyBsb2Fk
Li4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRo
b2Q6IFBPU1QKKyAgUmVxdWVzdCBIZWFkZXJzOgorICAgIENvbnRlbnQtTGVuZ3RoOiAwCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRGVsZXRl
CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0
LWVjaG8ucGhwCisgIE1ldGhvZDogREVMRVRFCisgIFJlcXVlc3QgSGVhZGVyczoKKyAgICBDb250
ZW50LUxlbmd0aDogMAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0Lk1ldGhvZE5vblN0YW5kYXJkCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0
YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hv
LnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogTk9OU1RBTkRBUkQK
KyAgUmVxdWVzdCBIZWFkZXJzOgorICAgIENvbnRlbnQtTGVuZ3RoOiAwCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRW1wdHkKK1RyaWdnZXJp
bmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAK
KyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFkZXJzOgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVybAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1
ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNl
cHQtZWNoby5waHA/bmV3VVJMPXZhbHVlCisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bmV3
VVJMPXZhbHVlCisgIE1ldGhvZDogR0VUCisgIFJlcXVlc3QgSGVhZGVyczoKKyAgR2V0OgorICAg
IG5ld1VSTDogdmFsdWUKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdC5VcmxGcmFnbWVudAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6
CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAK
KyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhl
YWRlcnM6CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3Qu
VXJsRW1wdHkKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBUeXBlRXJy
b3I6IFRoZSBVUkwgY2Fu4oCZdCBiZSBzaG93bgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0LkhlYWRlcnMKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVz
dCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0
LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBHRVQKKyAg
UmVxdWVzdCBIZWFkZXJzOgorICAgIFgtVmFsdWU6IG92ZXJyaWRkZW4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Qb3N0RGF0YQorVHJpZ2dlcmluZyBs
b2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBN
ZXRob2Q6IFBPU1QKKyAgUmVxdWVzdCBIZWFkZXJzOgorICAgIENvbnRlbnQtTGVuZ3RoOiAxNgor
ICAgIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCisgIFBv
c3Q6CisgICAgdmFsdWU6IG92ZXJyaWRkZW4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1y
ZXF1ZXN0LXByb3BlcnRpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzMWI0YTg0YjdjODMxYzhkYjBk
YzQ5MGM3MzU1YzkyM2VmMWI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwK
QEAgLTAsMCArMSwxODQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSh1cmwp
Cit7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTsKKyAgICAvLyBFdmFsIHRv
IGFjY2VwdCB0cmFpbGluZyBjb21hIEpTT04uCisgICAgbGV0IGRhdGEgPSBldmFsKCcoJyArIChh
d2FpdCByZXNwb25zZS50ZXh0KCkgfHwgInt9IikgKyAnKScpOworICAgIGRhdGFbInJlc3BvbnNl
VVJMIl0gPSByZXNwb25zZS51cmw7CisgICAgcmV0dXJuIGRhdGE7Cit9CisKK2FzeW5jIGZ1bmN0
aW9uIHBvc3REYXRhKHVybCkKK3sKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmws
IHsKKyAgICAgICAgbWV0aG9kOiAiUE9TVCIsCisgICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAg
ICAgICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgor
ICAgICAgICB9LAorICAgICAgICBib2R5OiAidmFsdWU9b3JpZ2luYWwiCisgICAgfSk7CisgICAg
Ly8gRXZhbCB0byBhY2NlcHQgdHJhaWxpbmcgY29tYSBKU09OLgorICAgIGxldCBkYXRhID0gZXZh
bCgnKCcgKyAoYXdhaXQgcmVzcG9uc2UudGV4dCgpIHx8ICJ7fSIpICsgJyknKTsKKyAgICBkYXRh
WyJyZXNwb25zZVVSTCJdID0gcmVzcG9uc2UudXJsOworICAgIHJldHVybiBkYXRhOworfQorCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFz
eW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKyAgICBsZXQgdGFyZ2V0
ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJzZXRVcCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAg
ICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwIiwKKyAgICAgICAgICAgICAgICBzdGFnZTog
SW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYXN5bmMgZnVuY3Rpb24gbG9n
UmVxdWVzdChyZXN1bHQpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQudmFsdWUpIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKGAgICR7cmVzdWx0LmRlc2NyaXB0aW9ufWApOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGxldCByZXF1ZXN0ID0gcmVzdWx0LnZh
bHVlOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBVUkk6ICR7cmVxdWVzdC51cml9YCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFJlc3BvbnNlIFVSTDogJHtyZXF1ZXN0LnJl
c3BvbnNlVVJMfWApOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBNZXRob2Q6ICR7cmVx
dWVzdC5tZXRob2R9YCk7CisgICAgICAgIGxldCBoZWFkZXJLZXlzID0gT2JqZWN0LmtleXMocmVx
dWVzdC5oZWFkZXJzKTsKKyAgICAgICAgaWYgKGhlYWRlcktleXMubGVuZ3RoKSB7CisgICAgICAg
ICAgICBoZWFkZXJLZXlzLnNvcnQoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAg
IFJlcXVlc3QgSGVhZGVyczpgKTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgaGVhZGVy
S2V5cykgeworICAgICAgICAgICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJYLSIpICYmICFu
YW1lLnN0YXJ0c1dpdGgoIkNvbnRlbnQtIikpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcXVlc3QuaGVhZGVyc1tuYW1lXTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IGdldEtleXMgPSBPYmplY3Qu
a2V5cyhyZXF1ZXN0LmdldCk7CisgICAgICAgIGlmIChnZXRLZXlzLmxlbmd0aCkgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiAgR2V0OiIpOworICAgICAgICAgICAgZ2V0S2V5cy5z
b3J0KCk7CisgICAgICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGdldEtleXMpIHsKKyAgICAgICAg
ICAgICAgICBsZXQgdmFsdWUgPSByZXF1ZXN0LmdldFtuYW1lXTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgbGV0IHBvc3RLZXlzID0gT2JqZWN0LmtleXMocmVxdWVzdC5w
b3N0KTsKKyAgICAgICAgaWYgKHBvc3RLZXlzLmxlbmd0aCkgeworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIiAgUG9zdDoiKTsKKyAgICAgICAgICAgIHBvc3RLZXlzLnNvcnQoKTsKKyAg
ICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgcG9zdEtleXMpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgdmFsdWUgPSByZXF1ZXN0LnBvc3RbbmFtZV07CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coYCAgICAke25hbWV9OiAke3ZhbHVlfWApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGlmIChyZXF1ZXN0LmVycm9yKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coYCAgRXJyb3I6ICR7cmVxdWVzdC5lcnJvcn1gKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBhZGRUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Npb24sIHNldHVwLCB0ZWFy
ZG93biwgb3ZlcnJpZGVzfSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
ICAgICBuYW1lLCBkZXNjcmlwdGlvbiwgc2V0dXAsIHRlYXJkb3duLAorICAgICAgICAgICAgYXN5
bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1ZXN0SWQs
IHJlcXVlc3QgfSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3
b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLm92ZXJyaWRlcywK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVxdWVzdCk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAg
ICAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRhcmdldC5SdW50aW1lQWdlbnQuZXZh
bHVhdGUoZXhwcmVzc2lvbik7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0YXJn
ZXQuUnVudGltZUFnZW50LmF3YWl0UHJvbWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0SWQsIHRy
dWUpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0IGRldGFpbHM6
Iik7CisgICAgICAgICAgICAgICAgYXdhaXQgbG9nUmVxdWVzdChyZXNwb25zZS5yZXN1bHQpOwor
ICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
TmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVx
dWVzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2QiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiIs
CisgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNo
by5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeyBtZXRob2Q6ICJQT1NUIiB9LAorICAgIH0p
OworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0Lk1ldGhvZERlbGV0ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVz
dCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGggREVMRVRFIiwKKyAgICAgICAgZXhwcmVzc2lvbjog
ImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3Zl
cnJpZGVzOiB7IG1ldGhvZDogIkRFTEVURSIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2ROb25TdGFu
ZGFyZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJj
ZXB0aW9uIHdpdGggTk9OU1RBTkRBUkQiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRh
KCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsg
bWV0aG9kOiAiTk9OU1RBTkRBUkQiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRW1wdHkiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRo
IE5PTlNUQU5EQVJEIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2Vz
L2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIiIg
fSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdC5VcmwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVl
c3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRoIGRpZmZlcmVudCBVUkwiLAorICAgICAgICBleHBy
ZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAg
ICAgICBvdmVycmlkZXM6IHsgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bmV3VVJMPXZhbHVlIiB9LAorICAg
IH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0LlVybEZyYWdtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1
ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBkaWZmZXJlbnQgVVJMIiwKKyAgICAgICAgZXhw
cmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAg
ICAgICAgb3ZlcnJpZGVzOiB7IHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwI2ZyYWdtZW50IiB9LAorICAgIH0p
OworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LlVybEVtcHR5IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1l
dGhvZCBpbnRlcmNlcHRpb24gd2l0aCBkaWZmZXJlbnQgVVJMIiwKKyAgICAgICAgZXhwcmVzc2lv
bjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAg
b3ZlcnJpZGVzOiB7IHVybDogIiIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5IZWFkZXJzIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGhlYWRlcnMgaW50ZXJjZXB0aW9uIiwKKyAgICAg
ICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcp
IiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IGhlYWRlcnM6IHsgIlgtVmFsdWUiOiAib3ZlcnJpZGRl
biIgfSB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0LlBvc3REYXRhIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJU
ZXN0cyByZXF1ZXN0IHBvc3QgZGF0YSBpbnRlcmNlcHRpb24iLAorICAgICAgICBleHByZXNzaW9u
OiAicG9zdERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92
ZXJyaWRlczogeworICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCisgICAgICAgICAgICBwb3N0
RGF0YTogYnRvYSgidmFsdWU9b3ZlcnJpZGRlbiIpLAorICAgICAgICB9LAorICAgIH0pOworCisg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24g
YWx0ZXJpbmcgcmVxdWVzdCBwcm9wZXJ0aWVzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGU1ZjRlMDdlZmI2MjZhM2ZhM2ZjZTk1NmQzYzUxMWY5ODAyM2Fh
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsOCBAQAorQUxFUlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURF
TiBvdmVycmlkZS5qcyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGlu
ZyB0aGUgc3VicmVzb3VyY2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdC5TdWJyZXNvdXJjZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
ZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kOTllNjBjY2Y1MTE5ZTA0YzA3ZWMxNGIxOThhMmM3MGQ1Y2NiZGIwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDcgQEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVx
dWVzdCBpbnRlcmNlcHRpb24gd2l0aCBlcnJvciBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisK
KworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoRXJy
b3IKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVz
b3VyY2Ugd2l0aCBlcnJvcgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3Iu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0MDgxMTgz
NGZmY2ZmMzhmYWZjNDk4NzVjZDAyZGQ0OWZkOTg1NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5j
U3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIpOworCisgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1
YnJlc291cmNlIHdpdGggZXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNl
IHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBlcnJvciIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7
CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5p
bnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUuanMiLAorICAgICAgICAgICAgICAgIHN0
YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwK
KyAgICAgICAgICAgIH0pOworICAgIAorICAgICAgICAgICAgbGV0IGludGVyY2VwdFdpdGhSZXF1
ZXN0ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJ
ZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3Jr
QWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvci5pbnZva2UoeworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIGVycm9yVHlwZTogSW5zcGVjdG9y
QmFja2VuZC5FbnVtLk5ldHdvcmsuUmVzb3VyY2VFcnJvclR5cGUuR2VuZXJhbCwKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNl
cHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0
b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291
cmNlczogdHJ1ZX0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2Fz
ZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGVycm9yIGZvciB0aGUg
c3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJyaWRlLmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Ut
d2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2Ut
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNzBhMTY2Yzc2OTEzYThlZGUzMzgyZWI5YzJmOGVm
OTkyZWE3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2Ut
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxFUlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMg
VEVYVAorQUxFUlQ6IE9WRVJSSURERU4gb3ZlcnJpZGUuanMgVEVYVAorVGVzdCByZXF1ZXN0IGlu
dGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC4KKworCis9
PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25z
ZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNv
dXJjZSB3aXRoIHJlc3BvbnNlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTVlOTAwNDQ5M2EyMzQ1NTc3YzA0M2RlMjIxNGM2MWVkNjFlMjg2YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIik7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVy
Y2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCByZXNwb25zZSIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNl
IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5h
c3N1bWluZ01haW5UYXJnZXQoKTsKKworICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lk5ldHdvcmtB
Z2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLmpz
IiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsu
TmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0
IGludGVyY2VwdFdpdGhSZXF1ZXN0ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0
IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAg
ICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5pbnZv
a2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAg
IG1pbWVUeXBlOiAidGV4dC9qYXZhc2NyaXB0IiwKKyAgICAgICAgICAgICAgICAgICAgY29udGVu
dDogYGFsZXJ0KCJPVkVSUklEREVOIG92ZXJyaWRlLmpzIFRFWFQiKTsgVGVzdFBhZ2UuZGlzcGF0
Y2hFdmVudFRvRnJvbnRlbmQoIk92ZXJyaWRlQ29udGVudERpZExvYWQiKTtgLAorICAgICAgICAg
ICAgICAgICAgICBiYXNlNjRFbmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dHVzOiAyMDAsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnM6IHt9LAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
TmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRXaXRoUmVx
dWVzdCk7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdu
b3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAg
ICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIk92ZXJyaWRlQ29udGVudERpZExv
YWQiKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmlu
aXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNwb25zZSBmb3IgdGhlIHN1YnJl
c291cmNlIGxvYWQuPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVycmlkZS5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LXN1YnJlc291cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg4NGFhZmFiOGE2MTQyNTNhYzU1ZmYz
YWRhZWRkMjYzNzAwYzQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbApA
QCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3Vp
dGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJT
dWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsK
KyAgICAgICAgICAgIGF3YWl0IHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmlu
dm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIsCisgICAgICAgICAgICAgICAgc3Rh
Z2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBsZXQgaW50ZXJjZXB0V2l0aFJlcXVlc3QgPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1
ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICB1cmw6ICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2Vw
dC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMiLAorICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0SWQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBX
SS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50
LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50ZXJjZXB0V2l0aFJlcXVlc3QpOworCisgICAgICAgICAg
ICBhd2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2
YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9y
VGVzdC5hd2FpdEV2ZW50KCJPdmVycmlkZUNvbnRlbnREaWRMb2FkIik7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50
ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9u
c2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhMWMwMjAzZWE5YWNiMDA2NDM4MWMyMDVhYjFi
ZDI3NGRiNzdjOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNzMgQEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK1Rl
c3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNwb25zZS4KKworCis9PSBSdW5uaW5nIHRl
c3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlLlRleHQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2Ug
ZGV0YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL292ZXJyaWRlLnR4dAorICBNSU1FIFR5cGU6IHRleHQvcGxhaW4KKyAgU3RhdHVz
OiA5ODcgT3ZlcnJpZGUgU3RhdHVzIFRleHQKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250
ZW50LXR5cGU6IHRleHQvcGxhaW4KKyAgICB4LW92ZXJyaWRlLWhlYWRlci0xOiBPdmVycmlkZS1I
ZWFkZXItVmFsdWUtMQorICAgIHgtb3ZlcnJpZGUtaGVhZGVyLTI6IE92ZXJyaWRlLUhlYWRlci1W
YWx1ZS0yCisgIENvbnRlbnQ6IFBBU1MgLSBPVkVSUklEREVOIFRFWFQKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5KYXZhU2NyaXB0
CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQKKyAg
TUlNRSBUeXBlOiBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0CisgIFN0YXR1czogMjAwIFN1cGVyIE9L
CisgIFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0CisgICAgeC1jdXN0b20taGVhZGVyOiBIZWFkZXIgdmFsdWUKKyAgQ29udGVudDogLyog
UEFTUyAqLyAoZnVuY3Rpb24oKSB7IC8qIE9WRVJSSURERU4gKi8gfSkoKTsKKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5JbWFnZQor
VHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1J
TUUgVHlwZTogaW1hZ2UvcG5nCisgIFN0YXR1czogMjAwIE9LCisgIFJlc3BvbnNlIEhlYWRlcnM6
CisgICAgY29udGVudC10eXBlOiBpbWFnZS9wbmcKKyAgQ29udGVudDogPGRhdGE+CisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVVJM
LlF1ZXJ5U3RyaW5nCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVS
TDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVy
cmlkZS50eHQ/cz0yCisgIE1JTUUgVHlwZTogdGV4dC9wbGFpbgorICBTdGF0dXM6IDIwMCBPSwor
ICBSZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtbGVuZ3RoOiAyOQorICAgIGNvbnRlbnQt
dHlwZTogdGV4dC9wbGFpbgorICBDb250ZW50OiBkZWZhdWx0IG92ZXJyaWRlLnR4dCBjb250ZW50
CisKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhS
ZXNwb25zZS5VUkwuRnJhZ21lbnQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWls
czoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3Vy
Y2VzL292ZXJyaWRlLnR4dAorICBNSU1FIFR5cGU6IHRleHQvcGxhaW4KKyAgU3RhdHVzOiAyMDAg
T0sKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IHRleHQvcGxhaW4KKyAg
ICB4LWV4cGVjdGVkOiBQQVNTCisgIENvbnRlbnQ6IFBBU1MKKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS40MDQKK1RyaWdnZXJpbmcg
bG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4dAorICBNSU1FIFR5cGU6IHRl
eHQvcGxhaW4KKyAgU3RhdHVzOiA0MDQgTm90IEZvdW5kCisgIFJlc3BvbnNlIEhlYWRlcnM6Cisg
ICAgY29udGVudC10eXBlOiB0ZXh0L3BsYWluCisgICAgeC1leHBlY3RlZDogUEFTUworICBDb250
ZW50OiBQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJl
c3BvbnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU0ZTE2ZTUwZDhjMjQ4MWEwNTE0ZTQ3Mjc5NDdiNmQ3
NmE1NzY1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAg
KzEsMTgxIEBACisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKworYXN5bmMgZnVuY3Rpb24gdHJpZ2dlck92ZXJyaWRlTG9h
ZCh1cmxTdWZmaXgpIHsKKyAgICBsZXQgdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0IjsKKyAgICBpZiAodXJsU3VmZml4
KQorICAgICAgICB1cmwgKz0gdXJsU3VmZml4OworCisgICAgdHJ5IHsKKyAgICAgICAgbGV0IHJl
c3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
IHVybDogcmVzcG9uc2UudXJsLAorICAgICAgICAgICAgdGV4dDogYXdhaXQgcmVzcG9uc2UudGV4
dCgpLAorICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsCisgICAgICAgICAgICBz
dGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LAorICAgICAgICAgICAgaGVhZGVyczogWy4u
LnJlc3BvbnNlLmhlYWRlcnNdCisgICAgICAgIH07CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICByZXR1cm4geyBlcnJvcjogZS5tZXNzYWdlIH07CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmRlYnVnKCk7CisgICAgbGV0IHN1aXRlID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UiKTsKKyAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJzZXRVcCIsCisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCB0YXJnZXQuTmV0d29ya0FnZW50LmFkZElu
dGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0IiwKKyAgICAg
ICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0
YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
YXN5bmMgZnVuY3Rpb24gbG9nUmVzcG9uc2UocmVzcG9uc2UpIHsKKyAgICAgICAgcmVzcG9uc2Uu
aGVhZGVycyA9IG5ldyBNYXAocmVzcG9uc2UuaGVhZGVycyk7CisgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKGAgIFVSTDogJHtyZXNwb25zZS51cmx9YCk7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKGAgIE1JTUUgVHlwZTogJHtyZXNwb25zZS5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIil9
YCk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFN0YXR1czogJHtyZXNwb25zZS5zdGF0
dXN9ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
YCAgUmVzcG9uc2UgSGVhZGVyczpgKTsKKyAgICAgICAgbGV0IGtleXMgPSBbLi4ucmVzcG9uc2Uu
aGVhZGVycy5rZXlzKCldOworICAgICAgICBrZXlzLnNvcnQoKTsKKyAgICAgICAgZm9yIChsZXQg
bmFtZSBvZiBrZXlzKSB7CisgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXNwb25zZS5oZWFkZXJz
LmdldChuYW1lKTsKKyAgICAgICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJ4LSIpICYmICFu
YW1lLnN0YXJ0c1dpdGgoImNvbnRlbnQtIikpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7Cisg
ICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgQ29udGVudDogJHtyZXNwb25z
ZS50ZXh0fWApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBkZXNj
cmlwdGlvbiwgc2V0dXAsIHRlYXJkb3duLCBleHByZXNzaW9uLCByZXNwb25zZURhdGF9KSB7Cisg
ICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9u
LCBzZXR1cCwgdGVhcmRvd24sCisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAg
ICAgICAgIGxldCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlID0gKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCB7IHRhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0IH0gPSBl
dmVudC5kYXRhOworICAgICAgICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVy
Y2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3BvbnNlRGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
ICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIu
RXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7
CisgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGFyZ2V0LlJ1bnRpbWVBZ2Vu
dC5ldmFsdWF0ZShleHByZXNzaW9uKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0
IHRhcmdldC5SdW50aW1lQWdlbnQuYXdhaXRQcm9taXNlKHJlc3BvbnNlLnJlc3VsdC5vYmplY3RJ
ZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlc3BvbnNlIGRl
dGFpbHM6Iik7CisgICAgICAgICAgICAgICAgYXdhaXQgbG9nUmVzcG9uc2UocmVzcG9uc2UucmVz
dWx0LnZhbHVlKTsKKyAgICAgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgaW50
ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5UZXh0IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJJbnRl
cmNlcHQgcmVxdWVzdCB3aXRoIHRleHQgY29udGVudC4iLAorICAgICAgICBleHByZXNzaW9uOiBg
dHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7CisgICAgICAg
ICAgICBjb250ZW50OiBgUEFTUyAtIE9WRVJSSURERU4gVEVYVGAsCisgICAgICAgICAgICBiYXNl
NjRFbmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisg
ICAgICAgICAgICBzdGF0dXM6IDk4NywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPdmVycmlk
ZSBTdGF0dXMgVGV4dCIsCisgICAgICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAgICAg
IlgtT3ZlcnJpZGUtSGVhZGVyLTEiOiAiT3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTEiLAorICAgICAg
ICAgICAgICAgICJYLU92ZXJyaWRlLUhlYWRlci0yIjogIk92ZXJyaWRlLUhlYWRlci1WYWx1ZS0y
IiwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Uu
SmF2YVNjcmlwdCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiSW50ZXJjZXB0IHJlcXVlc3Qgd2l0
aCBqYXZhc2NyaXB0IGNvbnRlbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVy
cmlkZUxvYWQoKWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgY29udGVu
dDogYC8qIFBBU1MgKi8gKGZ1bmN0aW9uKCkgeyAvKiBPVkVSUklEREVOICovIH0pKCk7YCwKKyAg
ICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWltZVR5cGU6ICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwKKyAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAg
ICAgICAgc3RhdHVzVGV4dDogIlN1cGVyIE9LIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsKKyAg
ICAgICAgICAgICAgICAiWC1DdXN0b20tSGVhZGVyIjogIkhlYWRlciB2YWx1ZSIsCisgICAgICAg
ICAgICB9LAorICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkltYWdlIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJJbnRlcmNlcHQgcmVxdWVzdCB3aXRoIGltYWdlIGNvbnRlbnQu
IiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQoKWAsCisgICAgICAg
IHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgY29udGVudDogYnRvYSgiPGRhdGE+IiksCisg
ICAgICAgICAgICBiYXNlNjRFbmNvZGVkOiB0cnVlLAorICAgICAgICAgICAgbWltZVR5cGU6ICJp
bWFnZS9wbmciLAorICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICBzdGF0dXNU
ZXh0OiAiT0siLAorICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgIH0sCisgICAgfSk7
CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJl
cXVlc3RXaXRoUmVzcG9uc2UuVVJMLlF1ZXJ5U3RyaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJUZXN0IG92ZXJyaWRlcyB3aXRoIGRpZmZlcmVudCBxdWVyeSBzdHJpbmdzLiIsCisgICAgICAg
IGV4cHJlc3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKCI/cz0yIilgLAorICAgICAgICByZXNw
b25zZURhdGE6IHsKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAg
ICAgY29udGVudDogIlBBU1MiLAorICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWluIiwK
KyAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwK
KyAgICAgICAgICAgIGhlYWRlcnM6IHsiWC1FeHBlY3RlZCI6ICJQQVNTIn0sCisgICAgICAgIH0s
CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmlu
dGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVVJMLkZyYWdtZW50IiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0IG92ZXJyaWRlIGZvciBhIGxvYWQgd2l0aCBhIGZyYWdtZW50LiIsCisgICAg
ICAgIGV4cHJlc3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKCIjZnJhZyIpYCwKKyAgICAgICAg
cmVzcG9uc2VEYXRhOiB7CisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAg
ICBiYXNlNjRFbmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFp
biIsCisgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJP
SyIsCisgICAgICAgICAgICBoZWFkZXJzOiB7IlgtRXhwZWN0ZWQiOiAiUEFTUyJ9LAorICAgICAg
ICB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLjQwNCIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiVGVzdCBmb3IgYSA0MDQgb3ZlcnJpZGUuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdn
ZXJPdmVycmlkZUxvYWQoKWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAg
Y29udGVudDogIlBBU1MiLAorICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAg
ICAgICAgICBtaW1lVHlwZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgc3RhdHVzOiA0MDQs
CisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiTm90IEZvdW5kIiwKKyAgICAgICAgICAgIGhlYWRl
cnM6IHsiWC1FeHBlY3RlZCI6ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBz
dWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRo
IHJlc3BvbnNlLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVj
aG8ucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ5YWI1MGE1N2E0NGRhOGJjNmYxMThlYjVmZGViYmU3MTJhZjRl
MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKQEAgLTAsMCArMSwxOCBAQAorewor
ICAgICJ1cmkiOiAiPD9waHAgZWNobyAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSA/PiIsCisgICAg
Im1ldGhvZCI6ICI8P3BocCBlY2hvICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddOyA/PiIsCisg
ICAgImhlYWRlcnMiOiB7Cis8P3BocCBmb3JlYWNoIChnZXRhbGxoZWFkZXJzKCkgYXMgJG5hbWUg
PT4gJHZhbHVlKSB7ID8+CisgICAgICAgICI8P3BocCBlY2hvICRuYW1lOyA/PiI6ICI8P3BocCBl
Y2hvICR2YWx1ZTsgPz4iLAorPD9waHAgfSA/PiB9LAorICAgICJnZXQiOiB7Cis8P3BocCBmb3Jl
YWNoICgkX0dFVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAgICAgIjw/cGhwIGVjaG8g
JG5hbWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8P3BocCB9ID8+CisgICAgfSwK
KyAgICAicG9zdCI6IHsKKzw/cGhwIGZvcmVhY2ggKCRfUE9TVCBhcyAkbmFtZSA9PiAkdmFsdWUp
IHsgPz4KKyAgICAgICAgIjw/cGhwIGVjaG8gJG5hbWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVl
OyA/PiIsCis8P3BocCB9ID8+CisgICAgfSwKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92
ZXJyaWRlbi1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVmMjIxNjdlZGIwYmJlM2ZiMDcyYzQ3MWVjODIzNzQ5NTNhNWQyYTYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sCkBAIC0wLDAgKzEsMTAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+PC9oZWFkPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPgorICAgIDwvc2NyaXB0Pgor
ICAgIDxib2R5PgorICAgICAgICA8cD5PdmVycmlkZGVuIHBhZ2UgY29udGVudDwvcD4KKyAgICAg
ICAgPHNjcmlwdD5hbGVydCgiUkVQTEFDRUQgSFRNTCBDT05URU5UIik7IFRlc3RQYWdlLmNvbXBs
ZXRlVGVzdCgpOzwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2Vw
dC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2Ny
aXB0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc3OGVjNGUyNjExNTdkMzMwOTE5YzEzMjg5OTk1NTc3OTg5Mzdl
YWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCkBA
IC0wLDAgKzEsMiBAQAorYWxlcnQoIk9WRVJSSURFTiBvdmVycmlkZS5qcyBURVhUIik7CitUZXN0
UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3By
b3RvY29sLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMvcHJvdG9jb2wtdGVzdC5qcwppbmRleCBhMDI2NDlkNTZiZGIzZDI4NWMxZjBkN2Y4MDBjZmU0
MTA4OTIyNjQxLi44MzFhNjFmNjc4NWU0NDg4YjEyZDdkZmRlZjFmZTY2ZDM3NTUxMjIyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9j
b2wtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMvcHJvdG9jb2wtdGVzdC5qcwpAQCAtODcsMTIgKzg3LDE0IEBAIFRlc3RQYWdlLnJ1blRlc3Qg
PSB3aW5kb3cucnVuVGVzdCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodHlwZW9mIHRlc3RGdW5jdGlv
biAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHNlbmQgdGVzdCgp
IGJlY2F1c2UgaXQgaXMgbm90IGEgZnVuY3Rpb24uIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbGV0IHVybCA9IHRlc3RS
dW5uZXIuaW5zcGVjdG9yVGVzdFN0dWJVUkw7CiAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgYWxl
cnQoIkZhaWxlZCB0byBvYnRhaW4gaW5zcGVjdG9yIHRlc3Qgc3R1YiBVUkwuIik7CiAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gcnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZChpbml0aWFsaXplcnMp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJj
ZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbApp
bmRleCA0NDgwNjQyMDA0NDc2OTdmYjA3ZjQxNmU5Nzg2Mzk4ZTAwM2QyNDYwLi5kNjZlMTQwZWI3
MTc4NjQ3YzM4ODYyOWIwZDEzZTFhYTAxYTAzMGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25z
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNl
LW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKQEAgLTQ2LDcgKzQ2LDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICAvLyBMZXQgdGhlIGxvYWQgY29udGludWUuCiAgICAgICAg
ICAgICBhd2FpdCBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9j
b2wuYXdhaXRFdmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlc3BvbnNlUmVjZWl2ZWQifSksCi0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3
b3JrLmludGVyY2VwdENvbnRpbnVlIiwgcGFyYW1zOiB7cmVxdWVzdElkOiBtZXNzYWdlT2JqZWN0
LnBhcmFtcy5yZXF1ZXN0SWR9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wu
YXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdENvbnRpbnVlIiwgcGFyYW1z
OiB7cmVxdWVzdElkOiBtZXNzYWdlT2JqZWN0LnBhcmFtcy5yZXF1ZXN0SWQsIHN0YWdlOiAicmVz
cG9uc2UifX0pLAogICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICBQcm90b2NvbFRlc3QucGFz
cygiUmVzcG9uc2UgcmVjZWl2ZWQuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24gYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM2NGUyYjBkOTk2N2NlYjFlZDdlMzJjZDE5MjkzNWRmMTc2NTgxMjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1p
bnRlcmNlcHRlZC5qc29uCkBAIC0wLDAgKzEgQEAKK2ludGVyY2VwdGVkIHJlcXVlc3QKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggMzkzNWZlYjc0NGQ0N2NmNjFmZDNjMWYzMzg5MmJiZTdmMmFl
OWI5Ni4uNmI5MjY3ZjU5ODFiZjU2OGZlMmYxM2IzNzRjZWFkNGU3NDMyODRlZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTc0LDYgKzU3
NCwxNyBAQCBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJy
aWRlLXNjcmlwdC10YWcuaHRtbCBbIEZhaWx1cmUgXQogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZS1yZXNwb25zZS1pbnNwZWN0b3Itb3ZlcnJpZGUuaHRtbCBbIEZhaWx1cmUg
XQogaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVz
cG9uc2UuaHRtbCBbIFNraXAgXQogCisjIFJlcXVlc3QgaW50ZXJjZXB0aW9uIGlzIG5vdCBhdmFp
bGFibGUgaW4gV2ViS2l0MQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC13aXRoLXJlc3BvbnNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0bWwg
WyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
bWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sIFsgU2tpcCBd
CitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291
cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbCBb
IFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1z
dWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwgWyBTa2lwIF0KKwogd2Via2l0Lm9yZy9iLzE2NDkz
MyBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgWyBGYWlsdXJl
IF0KIAogd2Via2l0Lm9yZy9iLzE2NTU0MSBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhl
ZC1vdmVybGFwLWV4dGVudC1ydGwuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401823</attachid>
            <date>2020-06-12 21:06:46 -0700</date>
            <delta_ts>2020-06-14 17:16:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200612210645.patch</filename>
            <type>text/plain</type>
            <size>113231</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTk1MjMwNmRlNGQ3MDNlYWNkY2VkYTliYzFlNjUxYzg0OGFmNGE4Li4xMjhjMTk4ZmE5YTczMzk1
MDYyZTNiNTg3NDkwNTJjMTVhYTZmNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0xMSAgUGF1bG8gTWF0
b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBpbmNsdWRlIHRv
IEpTT05PYmplY3QuY3BwIC0gbm9uLXVuaWZpZWQgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGM5MDI3
ZjM1ZDA3ZjcyOTQwMjVmY2Y3ZGY5NjM5MzQzYTllNmM5Li40YWFlMGRiN2JhOTA4Mzg0N2ExYTc2
OWNkMWJjY2Y5ZTg2N2U1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjAtMDYt
MDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAg
cHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90
aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVs
ZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3Qn
IGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGlu
dWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1mcmFnbWVudC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2Uu
aHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hv
dWxkSW50ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6Omlu
dGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNv
bnRpbnVlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0Q29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVz
dDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdDo6Y29udGludWVXaXRoT3JpZ2lu
YWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6UGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3Q6OmNvbnRpbnVlV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0w
Ni0xMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcHJvdmUgdXJs
LXNldHRlcnMuaHRtbCBXUFQgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMDFlZmUz
ZDJmMGU5ODg1NjU3NDE5ZDIxNzBiYTBkYzRlNWNjNzU0NC4uZjUyZmQ5ZThiMmUwNzE1YmQ2Y2Rj
MDQ0NzU5MTM0NDg2YzIyZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMjAtMDYtMDMgIFBhdmVsIEZlbGRtYW4gPHBhdmVsLmZlbGRtYW5AZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3
b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRX
aXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVkLCBt
b2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAg
ICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5hZGRMb2NhbFJlc291cmNlT3ZlcnJpZGUpOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlbW92ZUxvY2FsUmVzb3VyY2VPdmVycmlkZSk6
CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVk
KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXNwb25zZUludGVyY2Vw
dGVkKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlUmVzb3Vy
Y2VPdmVycmlkZURpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5OZXR3b3JrT2JzZXJ2ZXIucHJv
dG90eXBlLnJlcXVlc3RJbnRlcmNlcHRlZCk6CisKIDIwMjAtMDYtMTAgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRleHQgaW5wdXRz
IHNob3VsZCBub3Qgc3BlbGxjaGVjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlN2Y4NDlkNmY4ODczYjA3NjFiZDg1
YjRjMDM2NTZhOTkwYWE5NWNjLi5iY2RiNDZlM2FlOTIyZTMxYjQzMzBlZmJmY2EyNmQ5Y2YxZjk3
YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTAzICBQYXZlbCBGZWxkbWFu
ICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50
cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVz
dCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4g
SXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0Cisg
ICAgICAgIGNhbiBiZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0
YWdlIGVudW0gY2FuIG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2
YWx1ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKToK
KwogMjAyMC0wNi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIE1lZGlhVXNhZ2VNYW5hZ2VyQ29jb2Egc2hvdWxkIHVzZSBhIGRpZmZl
cmVudCBVU1ZpZGVvVXNhZ2UgaW5pdGlhbGl6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KaW5kZXggZjI0MjVkZDZhZmMw
ZWZiZjFkMTE1MjIwZmQ0MjQ2YWZlMmZiOTJlMS4uNjVhYjIwOTJiMGZmZDBlYWQzZGExZGRjY2Qz
OThkNGY0MTc5ZjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9OZXR3b3JrLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KQEAgLTE1NSw3ICsxNTUsMTMgQEAKICAgICAgICAg
ICAgICJpZCI6ICJOZXR3b3JrU3RhZ2UiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29y
ayByZXF1ZXN0LiIsCi0gICAgICAgICAgICAiZW51bSI6IFsicmVzcG9uc2UiXQorICAgICAgICAg
ICAgImVudW0iOiBbInJlcXVlc3QiLCAicmVzcG9uc2UiXQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAiaWQiOiAiUmVzb3VyY2VFcnJvclR5cGUiLAorICAgICAgICAgICAgInR5
cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3Rh
Z2VzIG9mIGEgbmV0d29yayByZXF1ZXN0LiIsCisgICAgICAgICAgICAiZW51bSI6IFsiR2VuZXJh
bCIsICJBY2Nlc3NDb250cm9sIiwgIkNhbmNlbGxhdGlvbiIsICJUaW1lb3V0Il0KICAgICAgICAg
fQogICAgIF0sCiAgICAgImNvbW1hbmRzIjogWwpAQCAtMjQ0LDEwICsyNTAsMTAgQEAKICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJBZGQgYW4gaW50ZXJjZXB0aW9uLiIsCiAgICAgICAgICAg
ICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlVSTCBwYXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcgaWYg
bm90IHNwZWNpZmllZCBvciBlbXB0eSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGlu
dGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBm
YWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1l
dGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBz
dGFnZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVh
dHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNTYsMTcgKzI2MiwyOSBAQAogICAgICAg
ICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdl
IiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5n
IG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Jl
Z2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9u
LiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29y
a1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50
IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVn
dWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7
CiAgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRDb250aW51ZSIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ29udGludWUgYW4gaW50ZXJjZXB0aW9uIHdpdGggbm8gbW9kaWZpY2F0
aW9ucy4iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIHJlcXVlc3Qgb3Ig
cmVzcG9uc2Ugd2l0aG91dCBtb2RpZmljYXRpb25zLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlw
ZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0
aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3Ig
cmVzcG9uc2UgdG8gY29udGludWUuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBm
b3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51
ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdv
cmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0byBjb250aW51ZS4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgaW50
ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRlZCBvbmUuIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRy
ZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRl
cmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFs
IjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0
cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdo
IG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEsIGJhc2U2NC1lbmNvZGVkLiIgfQog
ICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yODIsNiArMzAwLDI3IEBA
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVz
IHRleHQuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBh
c3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0KICAgICAgICAgICAg
IF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0
UmVxdWVzdFdpdGhSZXNwb25zZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvdmlk
ZSByZXNwb25zZSBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVxdWVzdC4gUmVxdWVzdCBjb21wbGV0ZWx5
IGJ5cGFzc2VzIHRoZSBuZXR3b3JrIGluIHRoaXMgY2FzZSBhbmQgaXMgaW1tZWRpYXRlbHkgZnVs
ZmlsbGVkIHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVx
dWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBO
ZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1
ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTUlN
RSBUeXBlIGZvciB0aGUgZGF0YS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0
dXMiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3Rh
dHVzIGNvZGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0
LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFk
ZXJzIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0UmVxdWVzdFdpdGhFcnJvciIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmFpbCBy
ZXF1ZXN0IHdpdGggZ2l2ZW4gZXJyb3IgdHlwZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1
ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5l
dHdvcmsgcmVxdWVzdCB0byBmYWlsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVy
cm9yVHlwZSIsICIkcmVmIjogIlJlc291cmNlRXJyb3JUeXBlIiwgImRlc2NyaXB0aW9uIjogIkRl
bGl2ZXIgZXJyb3IgcmVhc29uIGZvciB0aGUgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAgICAgICAg
ICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpAQCAtMzU3LDkgKzM5Niwx
NyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNo
ZWRSZXNvdXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAg
ICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
cmVxdWVzdEludGVyY2VwdGVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3
aGVuIEhUVFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3Qg
cmVzcG9uZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+LCA8Y29k
ZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9jb2RlPmAgb3IgPGNvZGU+TmV0d29yay5p
bnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byByZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAor
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxp
ZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVmIjogIlJlcXVlc3QiLCAiZGVzY3JpcHRp
b24iOiAiT3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlz
IGlzIGNvbnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewog
ICAgICAgICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRlcmNlcHRlZCIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2Vw
dGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJj
ZXB0Q29udGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8
L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29u
dGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2Rl
PmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVz
IjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRz
IHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4i
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IGVkNzYzYzExZWI5NTY0NmY2M2VjZjhkZGE3MDhhYjg4NDE0ZjMy
OTAuLjZjYjU5ZWNlZWE0ZWIyZTgxNjVlOTU5NjQ0ODM3NjY1NjExZmE5MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC04MTEsMTAgKzgxMSwxNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhYwogICAgIH0KIH0K
IAotYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
dGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKLSAgICAgICAg
cmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CisgICAg
ICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50
ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmIChhdXRvKiBuZXR3
b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKKyAg
ICAgICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNSw2ICs4MzIsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAo
YXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0Fn
ZW50KCkpCisgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdU
Rk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3Jr
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBjN2I2NmJhMTE1NWQ5MWIzYzVlMGUzMTJlMTRiZDJmZTczMjg2ZDI1Li5kZjkzOTA1YjQ1
YmFlNGM3NGE3MWQxZWFlODljMTI1ZTAxODNhMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKQEAgLTIzNCw4ICsyMzUsMTAg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4pOwpAQCAtNDQyLDggKzQ0NSwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3Vy
Y2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wg
d2lsbEludGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
Jiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTEyNTcs
MTEgKzEyNjIsMTkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJgogICAgIHdpbGxEZXN0cm95Q2Fj
aGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxJbnRlcmNl
cHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgICAgIHJl
dHVybiB3aWxsSW50ZXJjZXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0
dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1
ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyNzMsNiArMTI4NiwxMyBAQCBpbmxp
bmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVy
JiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KCpsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOwor
ICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckZyYW1lKGxvYWRlci5mcmFtZSgpKSkKKyAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXggOTU0YWFmMTIxYTlmYTUwN2Q4
M2JjMTBhZTM3ZGUxZjEyOGY3ZGNmYy4uZTM4ZWYzOThlN2U5YWZjMWUwMWE1NGI5Y2U2OGZjMjM1
OThlOTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMwLDExICszMCwyMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChmcmFtZSwgcmVxdWVzdCk7Cit9CisK
IGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmIGhhbmRsZXIpCit7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNl
cHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50
aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGI2N2U4OWI4
MGI0ZTdhODU4NmNhYzgxYWRlNWQ1OGExYmNiMGQ0MzEuLmEzMmY4NzdlYWEwNGYyN2QxMjEyNzBj
ZmY1YWNjM2IwMzJjMWM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDE0ICszNiwyNyBA
QCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKK2lubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoKmZyYW1lLCByZXF1ZXN0KTsKK30KKwogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSog
ZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CkBAIC01Myw2ICs2NiwxMiBAQCBpbmxpbmUgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lKgogICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KCpmcmFtZSwgcmVzcG9uc2UpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQor
eworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVy
Y2VwdFJlcXVlc3QobG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAg
IEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDJjZjQ5ODhm
MTMyMjJiZTU0MThiMGEyMzExNmI4ZGM5NmIxZjgzZjcuLjAwOWFiNjQ2MDlkM2YyMWYzMDYzMThk
ZjUxZWUwYTViMDdlYzJhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SFRUUEhlYWRlck1hcC5oIgpAQCAtNDY1LDYgKzQ2Niw3IEBAIHN0YXRpYyBJbnNwZWN0b3JQYWdl
QWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvCiB7CiAgICAgaWYgKHJlc291cmNlKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFn
ZW50OjppbnNwZWN0b3JSZXNvdXJjZVR5cGUoKnJlc291cmNlKTsKKwogICAgIHJldHVybiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CiB9CiAKQEAgLTg0MCwxMiArODQyLDEzIEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBt
X3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAgICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFy
KCk7CiAKKyAgICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIGNvbnRpbnVlUGVuZGlu
Z1Jlc3BvbnNlcygpOwogCiAgICAgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoZmFsc2UpOwog
fQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwp
Citib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwsIE5l
dHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UpCiB7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwogCkBAIC04NTQsNiArODU3LDExIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Zm9yIChhdXRvJiBpbnRlcmNlcHQgOiBtX2ludGVyY2VwdHMpIHsKKyAgICAgICAgaWYgKGludGVy
Y2VwdC5uZXR3b3JrU3RhZ2UgIT0gbmV0d29ya1N0YWdlKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChpbnRlcmNlcHQudXJsLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCiAgICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9IGludGVyY2VwdC5pc1Jl
Z2V4ID8gQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6UmVnZXggOiBD
b250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpFeGFjdFN0cmluZzsKICAg
ICAgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVJlZ3VsYXJF
eHByZXNzaW9uRm9yU2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGludGVyY2VwdC5jYXNlU2Vu
c2l0aXZlLCBzZWFyY2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJlZ2V4Lm1hdGNoKHVybFN0
cmluZykgIT0gLTEpCkBAIC04NjMsNiArODcxLDEzIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpCit7Cisg
ICAgZm9yIChhdXRvJiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3Rz
LnZhbHVlcygpKQorICAgICAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxS
ZXF1ZXN0KCk7CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7
CiAgICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRl
cmNlcHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI4LDE4ICsxMDQzLDE4IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwog
Ci0gICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlv
bkVuYWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAg
Y29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykK
K3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3Rh
Z2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
b3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAg
ICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3
b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93
biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7
CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3Ry
aW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNDgs
MjEgKzEwNjMsMTggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlv
bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICAgICAgaW50ZXJjZXB0
LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25h
bElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsK
LQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRl
cmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1f
aW50ZXJjZXB0cy5hcHBlbmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCi0gICAgICAgIGVycm9y
U3RyaW5nID0gIkludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVh
ZHkgZXhpc3RzIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcmNlcHQgZm9yIGdpdmVu
IHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIGFscmVhZHkgZXhpc3RzIl9zOwog
fQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJp
bmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1v
dmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChu
ZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdl
U3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtT
dGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5l
dHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3Jr
U3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9z
LCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50
ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNzEsMTkgKzEwODMsMjcgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFMKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5p
c1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVy
Y2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRlcmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0
YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5yZW1vdmVBbGwoaW50ZXJjZXB0
KSkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpbnRlcmNlcHQgZm9yIGdpdmVuIHVy
bCBhbmQgZ2l2ZW4gaXNSZWdleCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBp
bnRlcmNlcHQgZm9yIGdpdmVuIHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIl9z
OwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OndpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCkpOworICAgIHJldHVybiBzaG91
bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KQorICAgICAg
ICB8fCBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25z
ZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1faW50ZXJj
ZXB0aW9uRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNob3Vs
ZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpOwogfQogCiBi
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkxLDcgKzExMTEsMjEgQEAgYm9vbCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51
cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSwgTmV0d29y
a1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9l
bmFibGVkKTsKKyAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKKworICAgIFN0cmlu
ZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChsb2FkZXIuaWRlbnRp
ZmllcigpKTsKKyAgICBpZiAobV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY29udGFpbnMocmVx
dWVzdElkKSkgeworICAgICAgICBoYW5kbGVyKGxvYWRlci5yZXF1ZXN0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNldChyZXF1ZXN0
SWQsIG1ha2VVbmlxdWU8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+KCZsb2FkZXIsIFdURk1vdmUo
aGFuZGxlcikpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVk
KHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3Qo
KSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCkBAIC0xMTExLDE1ICsxMTQ1LDYzIEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VJbnRl
cmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25z
ZSwgbnVsbHB0cikpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IG5ldHdvcmtTdGFnZVN0cmluZykKIHsKLSAgICBhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7Ci0gICAgaWYg
KCFwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVs
cGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtT
dGFnZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29y
a1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzd2l0Y2ggKG5ldHdvcmtTdGFnZS52YWx1ZSgpKSB7CisgICAgY2FzZSBOZXR3b3Jr
U3RhZ2U6OlJlcXVlc3Q6CisgICAgICAgIGlmIChhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0
ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpKQorICAgICAgICAg
ICAgcGVuZGluZ0ludGVyY2VwdFJlcXVlc3QtPmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRp
bmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgTmV0d29ya1N0YWdlOjpSZXNwb25zZToKKyAgICAgICAgaWYgKGF1dG8g
cGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRh
a2UocmVxdWVzdElkKSkKKyAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVz
cG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVu
IHJlcXVlc3RJZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KIAotICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZFdpdGhP
cmlnaW5hbFJlc3BvbnNlKCk7Cit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
V2l0aFJlcXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBKU09O
OjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBw
ZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElk
KTsKKyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8mIGxvYWRlciA9ICpwZW5kaW5nUmVxdWVz
dC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBsb2FkZXIu
cmVxdWVzdCgpOworICAgIGlmICh1cmwpCisgICAgICAgIHJlcXVlc3Quc2V0VVJMKFVSTCh7IH0s
ICp1cmwpKTsKKyAgICBpZiAobWV0aG9kKQorICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2Qo
Km1ldGhvZCk7CisgICAgaWYgKGhlYWRlcnMpIHsKKyAgICAgICAgSFRUUEhlYWRlck1hcCBleHBs
aWNpdEhlYWRlcnM7CisgICAgICAgIGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDogKmhlYWRlcnMp
IHsKKyAgICAgICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1
ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAgICAgICAgICAgIGV4cGxpY2l0SGVhZGVy
cy5hZGQoa2V5LCBoZWFkZXJWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdC5zZXRI
VFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7CisgICAgfQorICAgIGlm
IChwb3N0RGF0YSkgeworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICBp
ZiAoIWJhc2U2NERlY29kZSgqcG9zdERhdGEsIGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gcG9zdERhdGEiX3M7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0
YTo6Y3JlYXRlKGJ1ZmZlcikpOworICAgIH0KKyAgICAvLyBGSVhNRTogZmlndXJlIG91dCBob3cg
dG8gaWRlbnRpZnkgd2hlbiBhIHJlcXVlc3QgaGFzIGJlZW4gb3ZlcnJpZGRlbiB3aGVuIHdlIGFk
ZCB0aGlzIHRvIHRoZSBmcm9udGVuZC4KKyAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRo
UmVxdWVzdChyZXF1ZXN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVy
Y2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29u
c3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3Rh
dHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQpAQCAtMTE1OCw2ICsxMjQwLDcg
QEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KKwogICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIH0gZWxzZQogICAgICAgICBvdmVycmlkZURhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQudXRm
OCgpLmxlbmd0aCgpKTsKQEAgLTExNjUsNiArMTI0OCw5MiBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29ucwogICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZChvdmVycmlkZVJlc3Bv
bnNlLCBvdmVycmlkZURhdGEpOwogfQogCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5j
b2RlZCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgaW50IHN0YXR1cywgY29uc3QgU3RyaW5nJiBz
dGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QmIGhlYWRlcnMpCit7CisgICAgYXV0byBwZW5k
aW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsK
KyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Np
bmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBsb2FkZXIg
PSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgaWYgKCFsb2FkZXItPmlkZW50
aWZpZXIoKSkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZnVsZmlsbCByZXF1
ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgaWYgKGJhc2U2NEVu
Y29kZWQpIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICAgICAgaWYgKCFi
YXNlNjREZWNvZGUoY29udGVudCwgYnVmZmVyKSkgeworICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBjb250ZW50Il9zOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5ndGgoKSk7CisKKyAg
ICAvLyBNaW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9yIC0gcmVwb3J0IGRpZFJlY2VpdmVSZXNw
b25zZSAmIGRpZEZpbmlzaExvYWRpbmcuCisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShw
ZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXItPnVybCgpLCBtaW1lVHlwZSwgZGF0YS0+c2l6ZSgpLCBT
dHJpbmcoKSk7CisgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJj
ZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOworICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0
YXR1cyk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoc3RhdHVzVGV4dCk7CisgICAg
SFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1
ZV0gOiBoZWFkZXJzKSB7CisgICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAgICAgaWYg
KHZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICBleHBsaWNpdEhlYWRl
cnMuYWRkKGtleSwgaGVhZGVyVmFsdWUpOworICAgIH0KKyAgICByZXNwb25zZS5zZXRIVFRQSGVh
ZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7CisgICAgcmVzcG9uc2Uuc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5
cGUoKSk7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIs
IGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCksIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7
CisgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1
ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlU3RyaW5nKQoreworICAgIGF1dG8gcGVuZGlu
Z1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7Cisg
ICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGxvYWRlciA9ICpwZW5kaW5nUmVxdWVzdC0+
bV9sb2FkZXIuZ2V0KCk7CisgICAgaWYgKGxvYWRlci5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7
CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBhYm9ydCByZXF1ZXN0LCBpdCBoYXMg
YWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJl
c291cmNlRXJyb3JUeXBlPihlcnJvclR5cGVTdHJpbmcpOworICAgIGlmICghZXJyb3JUeXBlKSB7
CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBlcnJvclR5cGU6ICJf
cywgZXJyb3JUeXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CisgICAgc3dpdGNoIChlcnJvclR5cGUudmFsdWUoKSkgeworICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkdlbmVy
YWw6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCBsb2FkZXIudXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNzQ29udHJvbDoKKyAg
ICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IGxvYWRlci51cmwoKSwgIkFjY2VzcyBkZW5pZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFj
Y2Vzc0NvbnRyb2wpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpDYW5jZWxsYXRpb246CisgICAgICAgIGVy
cm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXIu
dXJsKCksICJSZXF1ZXN0IGNhbmNlbGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxs
YXRpb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0OgorICAgICAgICBlcnJvciA9IFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLnVybCgpLCAiUmVx
dWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLnVybCgpLCAiUmVxdWVzdCBpbnRlcmNl
cHRlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBsb2FkZXIuZGlkRmFpbChlcnJvcik7Cit9CisKIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewog
ICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAi
dGV4dC8iKQpAQCAtMTE4MSw2ICsxMzUwLDcgQEAgUmVmPFRleHRSZXNvdXJjZURlY29kZXI+IElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIoY29uc3QgU3RyaW5nJgogCiAg
ICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKG1pbWVUeXBlKSkKICAgICAg
ICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShtaW1lVHlwZSwgIlVURi04Iik7
CisKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsK
ICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBs
aWNhdGlvbi94bWwiX3MpOwogICAgICAgICBkZWNvZGVyLT51c2VMZW5pZW50WE1MRGVjb2Rpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oCmluZGV4IGJmZDEzMWU5YjU4NTZjODRkYTc3MjQ4MDVlNzEzOTdiN2M3
NDg2YTkuLjAzYjRjYmE0NTIwMWE1ZGYwM2RkNmYyOGQ4ZmYzMDU2NjE0NjYwYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuaApAQCAtODgsMTAgKzg4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlcmlhbGl6
ZWRDZXJ0aWZpY2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJp
bmcqIHNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZSkgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlV2ViU29j
a2V0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyog
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JikgZmluYWw7CiAgICAgdm9pZCBzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3Ry
aW5nJiwgYm9vbCBlbmFibGVkKSBmaW5hbDsKLSAgICB2b2lkIGFkZEludGVyY2VwdGlvbihFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBj
b25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykgZmlu
YWw7Ci0gICAgdm9pZCByZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwg
Y29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgaW50ZXJj
ZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkgZmluYWw7
CisgICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIGNhc2VTZW5z
aXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlSW50ZXJj
ZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0
d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBp
c1JlZ2V4KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5n
KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogdXJsLCBjb25zdCBTdHJpbmcqIG1l
dGhvZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcqIHBvc3REYXRh
KSBmaW5hbDsKICAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0
RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0
IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKSBmaW5hbDsK
KyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYg
c3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0JiBoZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lk
IGludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAt
MTE4LDkgKzEyMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoRG9j
dW1lbnRMb2FkZXImKTsKICAgICB2b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHZvaWQg
ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKLSAgICBib29sIHdpbGxJ
bnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIGJvb2wgd2lsbElu
dGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHNob3VsZEludGVyY2Vw
dFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNl
cHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBpbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxv
YWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYp
OwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24mLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwogICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wg
Y2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKTsKQEAgLTE0MCw3ICsx
NDUsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVz
b3VyY2VUeXBlKTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCk7CisgICAgdXNpbmcg
TmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdl
OworICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCwgTmV0d29ya1N0YWdlKTsKKyAgICB2b2lk
IGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXNw
b25zZXMoKTsKIAogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKQEAgLTE1Myw2ICsxNjAsMzEgQEAgcHJpdmF0ZToKIAogICAgIGRv
dWJsZSB0aW1lc3RhbXAoKTsKIAorICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0IHsK
KyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOwor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIFBl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0KFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbG9hZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgICAgICAgICAgOiBtX2xvYWRlcihsb2FkZXIpCisgICAgICAgICAgICAsIG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIHsg
fQorCisgICAgICAgIHZvaWQgY29udGludWVXaXRoT3JpZ2luYWxSZXF1ZXN0KCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFtX2xvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAg
ICAgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKG1fbG9hZGVyLT5yZXF1ZXN0KCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb250aW51ZVdpdGhSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb21wbGV0aW9u
SGFuZGxlcihyZXF1ZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRS
ZXF1ZXN0KCkgPSBkZWZhdWx0OworICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IG1fbG9h
ZGVyOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIH07CisKICAgICBjbGFzcyBQZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTIw
NCwxNSArMjM2LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGJv
b2wgY2FzZVNlbnNpdGl2ZSB7IHRydWUgfTsKICAgICAgICAgYm9vbCBpc1JlZ2V4IHsgZmFsc2Ug
fTsKKyAgICAgICAgTmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSB7IE5ldHdvcmtTdGFnZTo6UmVz
cG9uc2UgfTsKIAogICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVyY2Vw
dCYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1cmwgPT0gb3Ro
ZXIudXJsCiAgICAgICAgICAgICAgICAgJiYgY2FzZVNlbnNpdGl2ZSA9PSBvdGhlci5jYXNlU2Vu
c2l0aXZlCi0gICAgICAgICAgICAgICAgJiYgaXNSZWdleCA9PSBvdGhlci5pc1JlZ2V4OworICAg
ICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdleAorICAgICAgICAgICAgICAg
ICYmIG5ldHdvcmtTdGFnZSA9PSBvdGhlci5uZXR3b3JrU3RhZ2U7CiAgICAgICAgIH0KICAgICB9
OwogICAgIFZlY3RvcjxJbnRlcmNlcHQ+IG1faW50ZXJjZXB0czsKKyAgICBIYXNoTWFwPFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0Pj4gbV9wZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5k
aW5nSW50ZXJjZXB0UmVzcG9uc2U+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXM7CiAKICAg
ICAvLyBGSVhNRTogSW5zcGVjdG9yTmV0d29ya0FnZW50IHNob3VsZCBub3QgYmUgYXdhcmUgb2Yg
c3R5bGUgcmVjYWxjdWxhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDc4NzNiZjk5YmQyMzQ5NjY0OGNiYzM0
NDcwNDg4MTgyMTU4OTRjODEuLjNhNzExMjc3YThhYTdjNGYwMzU5MGMyZmU1NzgzYTI0YWY4MmE2
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcApAQCAtODQxLDcgKzg0MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
CiAKICAgICByZXF1ZXN0LnVwZGF0ZVJlZmVycmVyUG9saWN5KGRvY3VtZW50KCkgPyBkb2N1bWVu
dCgpLT5yZWZlcnJlclBvbGljeSgpIDogUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93
bmdyYWRlKTsKIAotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHRSZXF1ZXN0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgaWYgKElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdCgmZnJhbWUsIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXF1ZXN0LnNldENhY2hpbmdQb2xpY3koQ2FjaGlu
Z1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKTsKIAogICAgIGF1dG8mIHBhZ2UgPSAqZnJhbWUucGFn
ZSgpOwpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgVmVjdG9yPFJlZjxTVkdJbWFnZT4+IENhY2hlZFJl
c291cmNlTG9hZGVyOjphbGxDYWNoZWRTVkdJbWFnZXMoKSBjb25zdAogCiBSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KQogewotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQor
ICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQoZnJhbWUoKSwg
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgIkluc3BlY3RvciBpbnRlcmNlcHQiX3MgfSk7CiAKICAg
ICBpZiAocmVxdWVzdC5jaGFyc2V0KCkuaXNFbXB0eSgpICYmICh0eXBlID09IENhY2hlZFJlc291
cmNlOjpUeXBlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5
bGVTaGVldCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDdkZTNjZDI1
MzlmYzNlNmY4YjY2OTcyNDNhMzc4OTU3YTU1MmE1NDUuLmEzMzg3MzQ0N2M5MGVjNjQzYmVlMzMz
MTViM2M5MmFkMWZiZmJjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCkBA
IC0xNTksOSArMTU5LDkgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS5kaXNhYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Lk5l
dHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZl
OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zNjQs
NyArMzY0LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRl
LnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJp
ZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVj
dG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAg
ICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2Uu
UmVzcG9uc2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZ
IChpT1MgMTMuMCk6IE5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0z
OTcsNyArMzk3LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJy
aWRlLnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3Zl
cnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVz
b3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5z
cGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAg
ICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3Rh
Z2UuUmVzcG9uc2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklM
SVRZIChpT1MgMTMuMCk6IE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3Qu
CkBAIC05MDgsMTIgKzkwOCwyMSBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElk
ZW50aWZpZXJNYXAuZGVsZXRlKHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICByZXF1
ZXN0SW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAg
ICAvLyBGSVhNRTogYWRkIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHN1cHBvcnQgdG8gdGhlIGZyb250
ZW5kLgorICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVz
dH0pOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQs
IHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbGV0IHVybCA9IFdJLnVybFdpdGhvdXRGcmFnbWVu
dChyZXNwb25zZS51cmwpOwogICAgICAgICBsZXQgbG9jYWxSZXNvdXJjZU92ZXJyaWRlID0gdGhp
cy5sb2NhbFJlc291cmNlT3ZlcnJpZGVGb3JVUkwodXJsKTsKICAgICAgICAgaWYgKCFsb2NhbFJl
c291cmNlT3ZlcnJpZGUgfHwgbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmRpc2FibGVkKSB7Ci0gICAg
ICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVlKHJlcXVlc3RJZCk7
CisgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVlLmludm9r
ZSh7CisgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMzc2LDcg
KzEzODUsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmws
CiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNl
U2Vuc2l0aXZlLAogICAgICAgICAgICAgaXNSZWdleDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlz
UmVnZXgsCi0gICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5O
ZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgIH07
CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLmFkZEludGVy
Y2VwdGlvbiAvIE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0x
NDMyLDQgKzE0NDEsNSBAQCBXSS5OZXR3b3JrTWFuYWdlci5FdmVudCA9IHsKICAgICBCb290c3Ry
YXBTY3JpcHREZXN0cm95ZWQ6ICJuZXR3b3JrLW1hbmFnZXItYm9vdHN0cmFwLXNjcmlwdC1kZXN0
cm95ZWQiLAogICAgIExvY2FsUmVzb3VyY2VPdmVycmlkZUFkZGVkOiAibmV0d29yay1tYW5hZ2Vy
LWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLWFkZGVkIiwKICAgICBMb2NhbFJlc291cmNlT3ZlcnJp
ZGVSZW1vdmVkOiAibmV0d29yay1tYW5hZ2VyLWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLXJlbW92
ZWQiLAorICAgIFJlcXVlc3RJbnRlcmNlcHRlZDogIm5ldHdvcmstbWFuYWdlci1yZXF1ZXN0LWlu
dGVyY2VwdGVkIgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcwppbmRleCA1OWMyOWM5
YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgwMGFhLi5mZTg4MjlhNzFiZmQwZWVkODU2YjQx
YzNhYWVjZTZhZTdmMWExNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCkBAIC0x
MDgsNiArMTA4LDExIEBAIFdJLk5ldHdvcmtPYnNlcnZlciA9IGNsYXNzIE5ldHdvcmtPYnNlcnZl
ciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlzcGF0Y2hlcgogICAgICAgICAvLyBGSVhNRTog
Tm90IGltcGxlbWVudGVkLgogICAgIH0KIAorICAgIHJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0
SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXF1ZXN0SW50
ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QpOworICAgIH0KKwogICAg
IHJlc3BvbnNlSW50ZXJjZXB0ZWQocmVxdWVzdElkLCByZXNwb25zZSkKICAgICB7CiAgICAgICAg
IFdJLm5ldHdvcmtNYW5hZ2VyLnJlc3BvbnNlSW50ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1
ZXN0SWQsIHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwZGRiMzUzMzQ0Mzg3ODRmYjIxNmZk
ZjcxMDg0Mjk3MjZmMmM2NjY3Li5mYWExZTE2MGY3NDhjYjJlMzVjMGQ2N2QwMTc2OWJhZTM4MmNm
ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBAIC0yMjgsNiAr
MjI5LDEzIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxv
YWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAoIXRyeUxvYWRpbmdV
c2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykp
IHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2No
ZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mi
KTsKKworICAgICAgICBpZiAoIXJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciAmJiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3QocmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgcmVzb3VyY2VM
b2FkZXIucmVxdWVzdCgpKSkgeworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9hZGVyLCBbdGhpcywgcHJvdGVjdGVk
UmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmUHRyKCZyZXNvdXJjZUxvYWRlciksIHRyYWNraW5nUGFy
YW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcmVzb3Vy
Y2VdKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIHNj
aGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcygqcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIsIHJl
cXVlc3QsIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZTBkNDE1YWMzMmU4NzI0YmRkZTRmNGY1NzFlMWJjY2NlYjhlZmIz
Yi4uNjFjZTk0NDk4NTZmMWExNDQ5MTE0NWQ0YWM2M2RjMzI2MzJlYWMwMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQzIEBACisyMDIwLTA2LTAzICBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWls
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNl
cHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUg
TmV0d29yaworICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNl
cHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVk
LCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQor
ICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGludWUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291
cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVy
dGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRo
LWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJl
c291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
d2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQu
anM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90
b2NvbC10ZXN0LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNl
LW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNvbjogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTA2LTExICBPcmlvbCBC
cnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBSZWltcG9y
dCBXUFQgdGVzdHMgcmVtb3ZlZCBpbiByMjYyODA5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjBlOGVlMGNk
MDEyOTMyODBmOGE4ZDM0ZjkyNDVmZjExYWQ1NTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1
ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitDT05TT0xFIE1FU1NBR0U6IFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbjogQWJvcnRFcnJvcjogRmV0Y2ggaXMgYWJvcnRlZAorQ09O
U09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IEFib3J0RXJyb3I6IEZl
dGNoIGlzIGFib3J0ZWQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gb2YgdGhlIGFib3J0ZWQg
cmVxdWVzdC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkFib3J0ZWQK
K1RyaWdnZXJpbmcgbG9hZC4uLgorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgor
RXJyb3I6IFVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJv
Y2Vzc2VkCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RX
aXRoRXJyb3IuQWJvcnRlZAorVHJpZ2dlcmluZyBsb2FkLi4uCitQQVNTOiBTaG91bGQgcHJvZHVj
ZSBhbiBleGNlcHRpb24uCitFcnJvcjogVW5hYmxlIHRvIGFib3J0IHJlcXVlc3QsIGl0IGhhcyBh
bHJlYWR5IGJlZW4gcHJvY2Vzc2VkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1y
ZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRkZjNiMjk0OTAzZWU2YjQxYTk1NTliZmEyYWFjZDk3
OWM0ZWJmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sCkBAIC0wLDAgKzEsNzcg
QEAKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBmZXRjaEFuZEFib3J0KCkgeworICAgIGxl
dCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9vdmVycmlkZS50eHQiOworICAgIGxldCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxl
cigpOworICAgIGxldCB7IHNpZ25hbCB9ID0gY29udHJvbGxlcjsKKyAgICBmZXRjaCh1cmwsIHsg
c2lnbmFsIH0pOworICAgIGNvbnRyb2xsZXIuYWJvcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UiKTsKKworICAgIE5ldHdvcmtBZ2VudC5h
ZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQiLAorICAgICAgICBz
dGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3Qs
CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuQWJvcnRlZCIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCBmdWxmaWxscyBhYm9ydGVk
IHJlcXVlc3QiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgbGV0IFtyZXF1ZXN0
SW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAg
V0kubmV0d29ya01hbmFnZXIuYXdhaXRFdmVudChXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1
ZXN0SW50ZXJjZXB0ZWQpLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoYGZldGNoQW5kQWJvcnQoKWApLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAg
IGF3YWl0IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGFzeW5jICgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25z
ZS5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRlcmNl
cHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBzdGFnZTogSW5z
cGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRlbnQ6ICJGQUlMIiwKKyAgICAgICAgICAgICAgICAgICAgYmFzZTY0
RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFp
biIsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAgICAg
ICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSwKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3RXaXRoRXJyb3IuQWJvcnRlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMg
cmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCByZWplY3RzIGFib3J0ZWQgcmVxdWVzdCIsCisgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dl
cmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQgW3JlcXVlc3RJbnRlcmNlcHRlZEV2ZW50
XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCks
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgZmV0Y2hBbmRB
Ym9ydCgpYCksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9y
VGVzdC5leHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4geworICAgICAgICAgICAgICAgIGF3YWl0
IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yLmludm9rZSh7CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdEludGVyY2VwdGVkRXZlbnQuZGF0YS5yZXF1
ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIGVycm9yVHlwZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuUmVzb3VyY2VFcnJvclR5cGUuR2VuZXJhbCwKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5U
ZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBvZiB0aGUgYWJvcnRl
ZCByZXF1ZXN0LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGludWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA2NzY3
NWRhNjcyZGYyYmE4ZGM2ZDNlMTQ5NGNkYTUwODUwYTQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
Y29udGludWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1Rlc3QgcmVxdWVzdCBpbnRl
cmNlcHRpb24gdGhhdCBjb250aW51ZXMgcmVxdWVzdC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3Vp
dGU6IE5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBzZXRV
cAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51
ZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBjb250ZW50OgorZnVuY3Rpb24gbXlTY3Jp
cHRKUygpIHt9CisKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5Db250aW51ZVdyb25nU3RhZ2UKK1RyaWdnZXJpbmcgbG9hZC4uLgorUEFTUzogU2hvdWxk
IHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorRXJyb3I6IE1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQg
cmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlV3JvbmdJZAorVHJpZ2dlcmluZyBsb2FkLi4u
CitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCitFcnJvcjogTWlzc2luZyBwZW5k
aW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2ZWZlMzcyNTYx
ZmZlMTJjNmU1ZTgwYzU5YmY5NTNhMmIzMmRhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRp
bnVlLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gZmV0Y2hE
YXRhKHVybCkKK3sKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOworICAgIHJl
dHVybiBhd2FpdCByZXNwb25zZS50ZXh0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRl
cmNlcHRDb250aW51ZSIpOworICAgIAorICAgIE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24u
aW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9zY3JpcHQuanMiLAorICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFj
a2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVl
c3QuQ29udGludWUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaW50ZXJj
ZXB0aW9uIHRoYXQgY29udGludWVzIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCBpbnRlcmNlcHRDb250aW51ZSA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAg
IGxldCB7IHRhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0IH0gPSBldmVudC5kYXRhOworICAgICAg
ICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRDb250aW51ZS5pbnZva2UoeworICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNw
ZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVy
Y2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2Fp
dCBSdW50aW1lQWdlbnQuZXZhbHVhdGUoImZldGNoRGF0YSgncmVzb3VyY2VzL3NjcmlwdC5qcycp
Iik7CisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IFJ1bnRpbWVBZ2VudC5hd2FpdFByb21p
c2UocmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJSZXNwb25zZSBjb250ZW50OiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2cocmVzcG9uc2UucmVzdWx0LnZhbHVlKTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdElu
dGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5Db250aW51ZVdyb25nU3RhZ2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJl
cXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQgY29udGludWVzIHdpdGggdGhlIHdyb25nIHN0YWdlIiwK
KyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJU
cmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVk
RXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2Vw
dGVkKSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBmZXRj
aERhdGEoJ3Jlc291cmNlcy9zY3JpcHQuanMnKWApLAorICAgICAgICAgICAgXSk7CisKKyAgICAg
ICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGFzeW5jICgpID0+IHsK
KyAgICAgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUuaW52
b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRF
dmVudC5kYXRhLnJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3Rv
ckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3Qu
Q29udGludWVXcm9uZ0lkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGlu
dGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyB3aXRoIHRoZSB3cm9uZyBzdGFnZSIsCisgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmlu
ZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQgW3JlcXVlc3RJbnRlcmNlcHRlZEV2ZW50XSA9
IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5h
d2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgZmV0Y2hEYXRhKCdy
ZXNvdXJjZXMvc2NyaXB0LmpzJylgKSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICBh
d2FpdCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAg
ICAgICAgICAgYXdhaXQgTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVlLmludm9rZSh7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogJ3dyb25nSWQnLAorICAgICAgICAgICAgICAg
ICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJl
cXVlc3QsCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBp
bnRlcmNlcHRpb24gdGhhdCBjb250aW51ZXMgcmVxdWVzdC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU2MWIwOGQ5NjFkZWI5NzE5ZDgwZmI5NzJhNjdmNWVlMzAwM2Uy
NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI0IEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGluIGNvbWJpbmF0aW9uIHdpdGggZnJh
Z21lbnRzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRXaXRo
UmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5V
UkxXaXRob3V0RnJhZ21lbnRCYXNlbGluZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IFVS
TDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHls
ZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz9vbmUKK1Jlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291
cmNlbWFwLmNzcz9vbmUKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdC5VUkxXaXRoRnJhZ21lbnRCYXNlbGluZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1
ZXN0IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz90d28jZnJhZ21lbnQKK1Jlc3BvbnNlIFVS
TDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHls
ZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz90d28jZnJhZ21lbnQKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxBZGRGcmFnbWVudAorVHJpZ2dlcmlu
ZyBsb2FkLi4uCitSZXF1ZXN0IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcworUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzI2Zy
YWdtZW50CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3Qu
VVJMUmVtb3ZlRnJhZ21lbnQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBVUkw6IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc3R5bGVzaGVldC5j
c3MjZnJhZ21lbnQKK1Jlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdt
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzlmMWU5N2U1NzEzN2QxNTVl
MGY1ZDNiYjE2OGExZDM5YzU2ODI5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQuaHRt
bApAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRTdWJyZXNvdXJjZSh1
cmwpCit7CisgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7Cisg
ICAgbGluay5yZWwgPSAic3R5bGVzaGVldCI7CisgICAgbGluay5ocmVmID0gdXJsOworICAgIGRv
Y3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5p
bnRlcmNlcHRXaXRoUmVxdWVzdCIpOworICAgIE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24u
aW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIsCisgICAgICAgIHN0YWdlOiBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICB9KTsKKwor
ICAgIGZ1bmN0aW9uIGFkZEJhc2VsaW5lVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHBy
ZXNzaW9uLCBzZXR1cCwgdGVhcmRvd259KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24sCisgICAgICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJU
cmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgW3JlcXVlc3RFdmVudCwg
cmVzcG9uc2VFdmVudCwgZmV0Y2hSZXNwb25zZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgICAgIFdJLkZyYW1lLmF3YWl0RXZlbnQoV0kuRnJhbWUuRXZlbnQuUmVzb3Vy
Y2VXYXNBZGRlZCksCisgICAgICAgICAgICAgICAgICAgIFdJLlJlc291cmNlLmF3YWl0RXZlbnQo
V0kuUmVzb3VyY2UuRXZlbnQuUmVzcG9uc2VSZWNlaXZlZCksCisgICAgICAgICAgICAgICAgICAg
IFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAgICAgICAgICAgICAgICBdKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygnUmVxdWVzdCBVUkw6ICcgKyByZXF1
ZXN0RXZlbnQuZGF0YS5yZXNvdXJjZS51cmwpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCdSZXNwb25zZSBVUkw6ICcgKyByZXNwb25zZUV2ZW50LnRhcmdldC51cmwpOworICAg
ICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisgICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uo
e25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9uLCBzZXR1cCwgdGVhcmRvd24sIHVybH0pIHsK
KyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRp
b24sIHNldHVwLCB0ZWFyZG93biwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAg
ICAgICAgICAgIGxldCBbcmVxdWVzdEV2ZW50LCByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudCwgZmV0
Y2hSZXNwb25zZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJ
LkZyYW1lLmF3YWl0RXZlbnQoV0kuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCksCisgICAg
ICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01h
bmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkKSwKKyAgICAgICAgICAgICAgICAgICAgUnVu
dGltZUFnZW50LmV2YWx1YXRlKGV4cHJlc3Npb24pLAorICAgICAgICAgICAgICAgIF0pOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCdSZXF1ZXN0IFVSTDogJyArIHJlcXVlc3RF
dmVudC5kYXRhLnJlc291cmNlLnVybCk7CisKKyAgICAgICAgICAgICAgICBsZXQgW3Jlc3BvbnNl
RXZlbnQsIGludGVyY2VwdFJlc3BvbnNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAg
ICAgICAgICAgICAgV0kuUmVzb3VyY2UuYXdhaXRFdmVudChXSS5SZXNvdXJjZS5FdmVudC5SZXNw
b25zZVJlY2VpdmVkKSwKKyAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2Vw
dFdpdGhSZXF1ZXN0Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6
IHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdXJsLAorICAgICAgICAgICAgICAgICAgICB9KSwKKyAgICAgICAgICAgICAgICBd
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygnUmVzcG9uc2UgVVJMOiAnICsg
cmVzcG9uc2VFdmVudC50YXJnZXQudXJsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7Cisg
ICAgfQorCisKKyAgICBhZGRCYXNlbGluZVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxXaXRob3V0RnJhZ21lbnRCYXNlbGluZSIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVzcG9uc2UgdXJsIHdpdGhvdXQgZnJhZ21lbnQgLSBiYXNl
bGluZSIsCisgICAgICAgIGV4cHJlc3Npb246ICJsb2FkU3VicmVzb3VyY2UoJ3Jlc291cmNlcy9z
dHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz9vbmUnKSIsCisgICAgfSk7CisKKyAgICBhZGRC
YXNlbGluZVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dC5VUkxXaXRoRnJhZ21lbnRCYXNlbGluZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMg
cmVzcG9uc2UgdXJsIHdpdGggZnJhZ21lbnQgLSBiYXNlbGluZSIsCisgICAgICAgIGV4cHJlc3Np
b246ICJsb2FkU3VicmVzb3VyY2UoJ3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFw
LmNzcz90d28jZnJhZ21lbnQnKSIsCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMQWRkRnJhZ21lbnQiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRo
IFVSTCB3aXRoIGZyYWdtZW50IiwKKyAgICAgICAgZXhwcmVzc2lvbjogImxvYWRTdWJyZXNvdXJj
ZSgncmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzJykiLAorICAgICAgICB1cmw6ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzI2Zy
YWdtZW50IiwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxSZW1vdmVGcmFnbWVudCIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHRoYXQgcmVtb3ZlcyBm
cmFnbWVudCIsCisgICAgICAgIGV4cHJlc3Npb246ICJsb2FkU3VicmVzb3VyY2UoJ3Jlc291cmNl
cy9zdHlsZXNoZWV0LmNzcyNmcmFnbWVudCcpIiwKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIsCisg
ICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGlu
dGVyY2VwdGlvbiBpbiBjb21iaW5hdGlvbiB3aXRoIGZyYWdtZW50cy48L3A+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWlu
LXJlc291cmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjEyNTkwNDgzNWVmMTBiNmMwNjAz
NGY2MTVmM2RlZjExOGY5ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK0FMRVJUOiBPUklHSU5BTCBIVE1MIENPTlRFTlQK
K0FMRVJUOiBSRVBMQUNFRCBIVE1MIENPTlRFTlQKK092ZXJyaWRkZW4gcGFnZSBjb250ZW50CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIx
MjU5MDQ4MzVlZjEwYjZjMDYwMzRmNjE1ZjNkZWYxMThmOWVhYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMg
QEAKK0FMRVJUOiBPUklHSU5BTCBIVE1MIENPTlRFTlQKK0FMRVJUOiBSRVBMQUNFRCBIVE1MIENP
TlRFTlQKK092ZXJyaWRkZW4gcGFnZSBjb250ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jYTAxMGRlY2FmZTkxNDJhN2U4ZDJhZjc5MjU0YWE4YjI2MjFkN2M5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApAQCAt
MCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUg
PSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZSIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSB3aXRoIHJlc3BvbnNlIiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJNYWluIHJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNl
cHRpb24gb24gbmV4dCBwYWdlIGxvYWQgYW5kIGZ1bGZpbGxzIHJlcXVlc3QiLAorICAgICAgICBh
c3luYyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgTmV0d29ya0FnZW50LmFkZEludGVyY2Vw
dGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQu
RW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLk5l
dHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRh
OworICAgICAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAg
ICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgICAgICAgICBjb250
ZW50OiBgPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9gK2BzY3JpcHQ+PC9oZWFkPjxib2R5PjxwPk92ZXJyaWRk
ZW4gcGFnZSBjb250ZW50PC9wPjxzY3JpcHQ+YWxlcnQoIlJFUExBQ0VEIEhUTUwgQ09OVEVOVCIp
OyBUZXN0UGFnZS5jb21wbGV0ZVRlc3QoKTs8L2ArYHNjcmlwdD48L2JvZHk+PC9odG1sPmAsCisg
ICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwK
KyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFn
ZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0
IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgbWFpbiByZXNvdXJjZSBsb2Fk
IHdpdGggcmVzcG9uc2UuPC9wPgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRNTCBDT05URU5U
Iik7PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3Vy
Y2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5MDcxNzk2OWFkNTI2
NmIyODg2NmE1YmJmNDBjZWNkNzNiNjM3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVz
b3VyY2UuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsu
aW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NYWluUmVzb3VyY2UiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIk1haW4gcmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiBv
biBuZXh0IHBhZ2UgbG9hZCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBh
d2FpdCBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAg
ICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IElu
c3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnNpbmdsZUZpcmVFdmVu
dExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVz
dH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRX
aXRoUmVxdWVzdC5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1wYWdlLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXdhaXQg
SW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVB
bGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5n
IHRoZSBtYWluIHJlc291cmNlIGxvYWQuPC9wPgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRN
TCBDT05URU5UIik7PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMDQxYzk1YWMyZjYwYWI4YmRiYzhkYjhhMjM2NWI4ODZhNzMzNmQ1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDg0IEBACitUZXN0
IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGFsdGVyaW5nIHJlcXVlc3QgcHJvcGVydGllcy4KKworCis9
PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBzZXRVcAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50
ZXJjZXB0UmVxdWVzdC5NZXRob2QKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxz
OgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhw
CisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBQT1NUCisgIFJlcXVlc3Qg
SGVhZGVyczoKKyAgICBDb250ZW50LUxlbmd0aDogMAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZERlbGV0ZQorVHJpZ2dlcmluZyBsb2FkLi4u
CitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9p
bnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6
IERFTEVURQorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6IDAKKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2ROb25TdGFu
ZGFyZAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVy
Y2VwdC1lY2hvLnBocAorICBNZXRob2Q6IE5PTlNUQU5EQVJECisgIFJlcXVlc3QgSGVhZGVyczoK
KyAgICBDb250ZW50LUxlbmd0aDogMAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZEVtcHR5CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3Qg
ZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1l
Y2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogR0VUCisgIFJl
cXVlc3QgSGVhZGVyczoKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdC5VUkwKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6
IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP25ld1VSTD12
YWx1ZQorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP25ld1VSTD12YWx1ZQorICBNZXRob2Q6
IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgIEdldDoKKyAgICBuZXdVUkw6IHZhbHVlCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMRnJhZ21lbnQK
K1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQt
ZWNoby5waHAKKyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFkZXJzOgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTEVtcHR5CitUcmlnZ2VyaW5n
IGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVGhlIFVSTCBjYW7igJl0IGJlIHNob3duCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuSGVhZGVycwor
VHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1l
Y2hvLnBocAorICBNZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgWC1WYWx1ZTog
b3ZlcnJpZGRlbgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LlBvc3REYXRhCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJ
OiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNw
b25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogUE9TVAorICBSZXF1ZXN0IEhlYWRlcnM6
CisgICAgQ29udGVudC1MZW5ndGg6IDE2CisgICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQKKyAgUG9zdDoKKyAgICB2YWx1ZTogb3ZlcnJpZGRlbgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUwMTgyODdkM2VkNDMwN2I0NjQ5Zjc0ZGEwZDA0YTNlNzA5YzM3ZmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbApAQCAtMCwwICsxLDE3OSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorYXN5
bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkKK3sKKyAgICB0cnkgeworICAgICAgICBsZXQgcmVz
cG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOworICAgICAgICAvLyBFdmFsIHRvIGFjY2VwdCB0cmFp
bGluZyBjb21hIEpTT04uCisgICAgICAgIGxldCBkYXRhID0gZXZhbCgnKCcgKyAoYXdhaXQgcmVz
cG9uc2UudGV4dCgpIHx8ICJ7fSIpICsgJyknKTsKKyAgICAgICAgZGF0YS5yZXNwb25zZVVSTCA9
IHJlc3BvbnNlLnVybDsKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICByZXR1cm4geyBlcnJvcjogZS5tZXNzYWdlIH07CisgICAgfQorfQorCithc3luYyBm
dW5jdGlvbiBwb3N0RGF0YSh1cmwpCit7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2go
dXJsLCB7CisgICAgICAgIG1ldGhvZDogIlBPU1QiLAorICAgICAgICBoZWFkZXJzOiB7CisgICAg
ICAgICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2Rl
ZCIsCisgICAgICAgIH0sCisgICAgICAgIGJvZHk6ICJ2YWx1ZT1vcmlnaW5hbCIsCisgICAgfSk7
CisgICAgLy8gRXZhbCB0byBhY2NlcHQgdHJhaWxpbmcgY29tYSBKU09OLgorICAgIGxldCBkYXRh
ID0gZXZhbCgnKCcgKyAoYXdhaXQgcmVzcG9uc2UudGV4dCgpIHx8ICJ7fSIpICsgJyknKTsKKyAg
ICBkYXRhLnJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsOworICAgIHJldHVybiBkYXRhOworfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0
ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKworICAgIE5ldHdv
cmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5w
aHAiLAorICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBsb2dSZXF1ZXN0KHJlc3Vs
dCkgeworICAgICAgICBsZXQgcmVxdWVzdCA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAgaWYgKHJl
cXVlc3QuZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgICR7cmVxdWVz
dC5lcnJvcn1gKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZyhgICBVUkk6ICR7cmVxdWVzdC51cml9YCk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKGAgIFJlc3BvbnNlIFVSTDogJHtyZXF1ZXN0LnJlc3BvbnNlVVJMfWApOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBNZXRob2Q6ICR7cmVxdWVzdC5tZXRob2R9YCk7Cisg
ICAgICAgIGxldCBoZWFkZXJLZXlzID0gT2JqZWN0LmtleXMocmVxdWVzdC5oZWFkZXJzKTsKKyAg
ICAgICAgaWYgKGhlYWRlcktleXMubGVuZ3RoKSB7CisgICAgICAgICAgICBoZWFkZXJLZXlzLnNv
cnQoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFJlcXVlc3QgSGVhZGVyczpg
KTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgaGVhZGVyS2V5cykgeworICAgICAgICAg
ICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJYLSIpICYmICFuYW1lLnN0YXJ0c1dpdGgoIkNv
bnRlbnQtIikpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IGxldCB2YWx1ZSA9IHJlcXVlc3QuaGVhZGVyc1tuYW1lXTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgbGV0IGdldEtleXMgPSBPYmplY3Qua2V5cyhyZXF1ZXN0LmdldCk7
CisgICAgICAgIGlmIChnZXRLZXlzLmxlbmd0aCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIiAgR2V0OiIpOworICAgICAgICAgICAgZ2V0S2V5cy5zb3J0KCk7CisgICAgICAgICAg
ICBmb3IgKGxldCBuYW1lIG9mIGdldEtleXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgdmFsdWUg
PSByZXF1ZXN0LmdldFtuYW1lXTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhg
ICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgbGV0IHBvc3RLZXlzID0gT2JqZWN0LmtleXMocmVxdWVzdC5wb3N0KTsKKyAgICAgICAgaWYg
KHBvc3RLZXlzLmxlbmd0aCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiAgUG9z
dDoiKTsKKyAgICAgICAgICAgIHBvc3RLZXlzLnNvcnQoKTsKKyAgICAgICAgICAgIGZvciAobGV0
IG5hbWUgb2YgcG9zdEtleXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXF1ZXN0
LnBvc3RbbmFtZV07CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgICAke25h
bWV9OiAke3ZhbHVlfWApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
ZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9uLCBzZXR1
cCwgdGVhcmRvd24sIG92ZXJyaWRlc30pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLCB0ZWFyZG93biwKKyAgICAgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRy
aWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2Vw
dGVkRXZlbnQsIGZldGNoUmVzcG9uc2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2Vy
LkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVB
Z2VudC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAgICAgICAgICAgICAgICBdKTsKKworICAgICAg
ICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2Uo
eworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50
LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAuLi5vdmVycmlkZXMsCisgICAg
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBS
dW50aW1lQWdlbnQuYXdhaXRQcm9taXNlKGZldGNoUmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdCBkZXRhaWxz
OiIpOworICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3QocmVzcG9uc2UucmVzdWx0KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZCIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhw
cmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAg
ICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIlBPU1QiIH0sCisgICAgfSk7CisKKyAgICBhZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9k
RGVsZXRlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRl
cmNlcHRpb24gd2l0aCBERUxFVEUiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdy
ZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgbWV0
aG9kOiAiREVMRVRFIiB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZE5vblN0YW5kYXJkIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBO
T05TVEFOREFSRCIsCisgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9p
bnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeyBtZXRob2Q6ICJOT05T
VEFOREFSRCIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
Ik5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2RFbXB0eSIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGggZW1wdHkgc3RyaW5n
IiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1l
Y2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIiIgfSwKKyAgICB9KTsK
KworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5VUkwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGlu
dGVyY2VwdGlvbiB3aXRoIGRpZmZlcmVudCBVUkwiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0
Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlk
ZXM6IHsgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bmV3VVJMPXZhbHVlIiB9LAorICAgIH0pOworCisgICAg
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVS
TEZyYWdtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBp
bnRlcmNlcHRpb24gd2l0aCBVUkwgd2l0aCBmcmFnbWVudCIsCisgICAgICAgIGV4cHJlc3Npb246
ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92
ZXJyaWRlczogeyB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCNmcmFnbWVudCIgfSwKKyAgICB9KTsKKworICAg
IGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5V
UkxFbXB0eSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50
ZXJjZXB0aW9uIHdpdGggZW1wdHkgVVJMIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0
YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7
IHVybDogIiIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
Ik5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5IZWFkZXJzIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJUZXN0cyByZXF1ZXN0IGhlYWRlcnMgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhwcmVzc2lv
bjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAg
b3ZlcnJpZGVzOiB7IGhlYWRlcnM6IHsgIlgtVmFsdWUiOiAib3ZlcnJpZGRlbiIgfSB9LAorICAg
IH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0LlBvc3REYXRhIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0
IHBvc3QgZGF0YSBpbnRlcmNlcHRpb24iLAorICAgICAgICBleHByZXNzaW9uOiAicG9zdERhdGEo
J3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogewor
ICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCisgICAgICAgICAgICBwb3N0RGF0YTogYnRvYSgi
dmFsdWU9b3ZlcnJpZGRlbiIpLAorICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gYWx0ZXJpbmcgcmVx
dWVzdCBwcm9wZXJ0aWVzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3Vi
cmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGU1ZjRlMDdlZmI2MjZhM2ZhM2ZjZTk1NmQzYzUxMWY5ODAyM2FhZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxF
UlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURFTiBvdmVycmlkZS5q
cyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVz
b3VyY2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5T
dWJyZXNvdXJjZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3ItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZGJmZDQ3M2ZhOTg0OWVlZDAwNWI2NDFkOGQzZDIxMTY4ODBmZWIzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1
IEBACitBTEVSVDogRXJyb3IgbG9hZGluZyBzdHlsZXNoZWV0CitDT05TT0xFIE1FU1NBR0U6IEFj
Y2VzcyBkZW5pZWQKK0FMRVJUOiBFcnJvciBsb2FkaW5nIHN0eWxlc2hlZXQKK0FMRVJUOiBFcnJv
ciBsb2FkaW5nIHN0eWxlc2hlZXQKK0FMRVJUOiBFcnJvciBsb2FkaW5nIHN0eWxlc2hlZXQKK1Rl
c3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBlcnJvciBmb3IgdGhlIHN1YnJlc291cmNlIGxv
YWQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RX
aXRoRXJyb3IKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3Qu
U3VicmVzb3VyY2Ugd2l0aCBnZW5lcmFsIGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxV
UkUgVEVYVDogUmVxdWVzdCBpbnRlcmNlcHRlZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggYWNjZXNzIGVycm9yCitUcmln
Z2VyaW5nIGxvYWQuLi4KK0ZBSUxVUkUgVEVYVDogQWNjZXNzIGRlbmllZAorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggY2Fu
Y2VsZWQgZXJyb3IKK1RyaWdnZXJpbmcgbG9hZC4uLgorRkFJTFVSRSBURVhUOiBSZXF1ZXN0IGNh
bmNlbGVkCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3Qu
U3VicmVzb3VyY2Ugd2l0aCB0aW1lb3V0IGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxV
UkUgVEVYVDogUmVxdWVzdCB0aW1lZCBvdXQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13
aXRoLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45YzQ3NWU1Y2VlZmQxMjYwYjBiZWUwMjUwYTk1NzllZmUyNDEzOGNmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorCitmdW5jdGlvbiBsb2FkU3VicmVzb3VyY2UoKQoreworICAgIGxldCBsaW5rID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpOworICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQi
OworICAgIGxpbmsuaHJlZiA9ICJyZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiOworICAgIGxpbmsu
b25lcnJvciA9ICgpID0+IGFsZXJ0KCdFcnJvciBsb2FkaW5nIHN0eWxlc2hlZXQnKTsKKyAgICBk
b2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIpOworICAgIE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNl
cHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIsCisgICAgICAgIHN0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICB9
KTsKKworICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgZXhwcmVz
c2lvbiwgc2V0dXAsIHRlYXJkb3duLCBlcnJvclR5cGV9KSB7CisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24s
CisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIFdJLlJlc291cmNl
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGYWls
LCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coJ0ZB
SUxVUkUgVEVYVDogJyArIGV2ZW50LnRhcmdldC5mYWlsdXJlUmVhc29uVGV4dCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJp
bmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVkRXZl
bnQsIGZldGNoUmVzcG9uc2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAg
ICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50
LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5l
dmFsdWF0ZSgnbG9hZFN1YnJlc291cmNlKCknKSwKKyAgICAgICAgICAgICAgICBdKTsKKworICAg
ICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9y
Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdEludGVyY2Vw
dGVkRXZlbnQuZGF0YS5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIGVycm9yVHlwZSwK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LlN1YnJlc291cmNlIHdpdGggZ2VuZXJhbCBlcnJvciIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGdlbmVyYWwgZXJy
b3IiLAorICAgICAgICBlcnJvclR5cGU6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLlJl
c291cmNlRXJyb3JUeXBlLkdlbmVyYWwsCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBh
Y2Nlc3MgZXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVx
dWVzdCBpbnRlcmNlcHRpb24gd2l0aCBhY2Nlc3MgZXJyb3IiLAorICAgICAgICBlcnJvclR5cGU6
IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLlJlc291cmNlRXJyb3JUeXBlLkFjY2Vzc0Nv
bnRyb2wsCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBjYW5jZWxlZCBlcnJvciIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlv
biB3aXRoIGNhbmNlbGVkIGVycm9yIiwKKyAgICAgICAgZXJyb3JUeXBlOiBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5DYW5jZWxsYXRpb24sCisgICAgfSk7
CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJl
cXVlc3QuU3VicmVzb3VyY2Ugd2l0aCB0aW1lb3V0IGVycm9yIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggdGltZW91dCBl
cnJvciIsCisgICAgICAgIGVycm9yVHlwZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsu
UmVzb3VyY2VFcnJvclR5cGUuVGltZW91dCwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggZXJyb3IgZm9yIHRo
ZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
c3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNzBhMTY2Yzc2OTEzYThlZGUz
MzgyZWI5YzJmOGVmOTkyZWE3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxFUlQ6IERFRkFVTFQg
b3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURERU4gb3ZlcnJpZGUuanMgVEVYVAorVGVz
dCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlIGZvciB0aGUgc3VicmVzb3VyY2Ug
bG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5TdWJyZXNvdXJjZSB3aXRoIHJlc3BvbnNlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZThmNjUzNGQ0YjI4NGVkMGVjODVjNzQ2MjRmYTdkMzBmZjNhMTBhZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAg
KzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IElu
c3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCByZXNwb25zZSIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3
aXRoIHJlc3BvbnNlIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGF3YWl0
IE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1
cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292
ZXJyaWRlLmpzIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVt
Lk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgV0kubmV0d29ya01hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29y
a01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7Cisg
ICAgICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Uu
aW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAg
ICAgICBtaW1lVHlwZTogInRleHQvamF2YXNjcmlwdCIsCisgICAgICAgICAgICAgICAgICAgIGNv
bnRlbnQ6IGBhbGVydCgiT1ZFUlJJRERFTiBvdmVycmlkZS5qcyBURVhUIik7IFRlc3RQYWdlLmRp
c3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJPdmVycmlkZUNvbnRlbnREaWRMb2FkIik7YCwKKyAgICAg
ICAgICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
IHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAg
ICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uo
e2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAg
ICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJPdmVycmlkZUNvbnRlbnRE
aWRMb2FkIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0Fu
ZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UgZm9yIHRoZSBz
dWJyZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNTg3OWMxNzllMmQzMGY5Zjhj
ZmQyNjZkMzk4NTY4OGFkNjg3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0
IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3QiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiIsCisgICAgICAgIGFzeW5j
IHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9u
Lmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIsCisgICAgICAgICAgICAgICAg
c3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0
LAorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5zaW5nbGVG
aXJlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0
ZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQs
IHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICBOZXR3b3JrQWdlbnQuaW50
ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgdXJsOiAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQt
cmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzIiwKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dElkLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBh
d2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxp
ZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVz
dC5hd2FpdEV2ZW50KCJPdmVycmlkZUNvbnRlbnREaWRMb2FkIik7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJj
ZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2Ut
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyZGFlNzFlMGFhMjcwYWJiNzU2ZDI0MjQ0NjNiNzg1
MDQ4YTdhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNzIgQEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3Qg
cmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNwb25zZS4KKworCis9PSBSdW5uaW5nIHRlc3Qg
c3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0
ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlLlRleHQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0
YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL292ZXJyaWRlLnR4dAorICBNSU1FIFR5cGU6IHRleHQvcGxhaW4KKyAgU3RhdHVzOiA5
ODcgT3ZlcnJpZGUgU3RhdHVzIFRleHQKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50
LXR5cGU6IHRleHQvcGxhaW4KKyAgICB4LW92ZXJyaWRlLWhlYWRlci0xOiBPdmVycmlkZS1IZWFk
ZXItVmFsdWUtMQorICAgIHgtb3ZlcnJpZGUtaGVhZGVyLTI6IE92ZXJyaWRlLUhlYWRlci1WYWx1
ZS0yCisgIENvbnRlbnQ6IFBBU1MgLSBPVkVSUklEREVOIFRFWFQKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5KYXZhU2NyaXB0CitU
cmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQKKyAgTUlN
RSBUeXBlOiBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0CisgIFN0YXR1czogMjAwIFN1cGVyIE9LCisg
IFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0CisgICAgeC1jdXN0b20taGVhZGVyOiBIZWFkZXIgdmFsdWUKKyAgQ29udGVudDogLyogUEFT
UyAqLyAoZnVuY3Rpb24oKSB7IC8qIE9WRVJSSURERU4gKi8gfSkoKTsKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5JbWFnZQorVHJp
Z2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUg
VHlwZTogaW1hZ2UvcG5nCisgIFN0YXR1czogMjAwIE9LCisgIFJlc3BvbnNlIEhlYWRlcnM6Cisg
ICAgY29udGVudC10eXBlOiBpbWFnZS9wbmcKKyAgQ29udGVudDogPGRhdGE+CisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVVJMLlF1
ZXJ5U3RyaW5nCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlk
ZS50eHQ/cz0yCisgIE1JTUUgVHlwZTogdGV4dC9wbGFpbgorICBTdGF0dXM6IDIwMCBPSworICBS
ZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbgorICAgIHgtZXhw
ZWN0ZWQ6IFBBU1MKKyAgQ29udGVudDogUEFTUworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLlVSTC5GcmFnbWVudAorVHJpZ2dlcmlu
ZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUgVHlwZTog
dGV4dC9wbGFpbgorICBTdGF0dXM6IDIwMCBPSworICBSZXNwb25zZSBIZWFkZXJzOgorICAgIGNv
bnRlbnQtdHlwZTogdGV4dC9wbGFpbgorICAgIHgtZXhwZWN0ZWQ6IFBBU1MKKyAgQ29udGVudDog
UEFTUworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlLjQwNAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBV
Ukw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3Zl
cnJpZGUudHh0CisgIE1JTUUgVHlwZTogdGV4dC9wbGFpbgorICBTdGF0dXM6IDQwNCBOb3QgRm91
bmQKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IHRleHQvcGxhaW4KKyAg
ICB4LWV4cGVjdGVkOiBQQVNTCisgIENvbnRlbnQ6IFBBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRo
LXJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTQ1YTE1
ZDY2ZmYwOGIxNzMxZTJkMjljOGZjMDEwNjdiN2Q3MTVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13
aXRoLXJlc3BvbnNlLmh0bWwKQEAgLTAsMCArMSwxNzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworYXN5bmMgZnVu
Y3Rpb24gdHJpZ2dlck92ZXJyaWRlTG9hZCh1cmxTdWZmaXgpIHsKKyAgICBsZXQgdXJsID0gImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUu
dHh0IjsKKyAgICBpZiAodXJsU3VmZml4KQorICAgICAgICB1cmwgKz0gdXJsU3VmZml4OworCisg
ICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTsKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHVybDogcmVzcG9uc2UudXJsLAorICAgICAgICAgICAg
dGV4dDogYXdhaXQgcmVzcG9uc2UudGV4dCgpLAorICAgICAgICAgICAgc3RhdHVzOiByZXNwb25z
ZS5zdGF0dXMsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LAor
ICAgICAgICAgICAgaGVhZGVyczogQXJyYXkuZnJvbShyZXNwb25zZS5oZWFkZXJzKSwKKyAgICAg
ICAgfTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiB7IGVycm9yOiBlLm1lc3Nh
Z2UgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IElu
c3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlIik7CisgICAgCisgICAgTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZv
a2UoeworICAgICAgICB1cmw6ICIuKm92ZXJyaWRlXC50eHQuKiIsCisgICAgICAgIGlzUmVnZXg6
IHRydWUsCisgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3
b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICB9KTsKKworICAgIGZ1bmN0aW9uIGxvZ1Jlc3BvbnNlKHJl
c3BvbnNlKSB7CisgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMgPSBuZXcgTWFwKHJlc3BvbnNlLmhl
YWRlcnMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBVUkw6ICR7cmVzcG9uc2UudXJs
fWApOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBNSU1FIFR5cGU6ICR7cmVzcG9uc2Uu
aGVhZGVycy5nZXQoImNvbnRlbnQtdHlwZSIpfWApOworICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhgICBTdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFJlc3BvbnNlIEhlYWRlcnM6YCk7CisgICAg
ICAgIGxldCBrZXlzID0gQXJyYXkuZnJvbShyZXNwb25zZS5oZWFkZXJzLmtleXMoKSk7CisgICAg
ICAgIGtleXMuc29ydCgpOworICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGtleXMpIHsKKyAgICAg
ICAgICAgIGxldCB2YWx1ZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KG5hbWUpOworICAgICAgICAg
ICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIngtIikgJiYgIW5hbWUuc3RhcnRzV2l0aCgiY29udGVu
dC0iKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKGAgICAgJHtuYW1lfTogJHt2YWx1ZX1gKTsKKyAgICAgICAgfQorICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZyhgICBDb250ZW50OiAke3Jlc3BvbnNlLnRleHR9YCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRv
d24sIGV4cHJlc3Npb24sIHJlc3BvbnNlRGF0YX0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLCB0ZWFyZG93biwKKyAg
ICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbcmVxdWVzdElu
dGVyY2VwdGVkRXZlbnQsIGZldGNoUmVzcG9uc2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAg
ICAgICAgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtN
YW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgICAgIFJ1
bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAgICAgICAgICAgICAgICBdKTsKKwor
ICAgICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdElu
dGVyY2VwdGVkRXZlbnQuZGF0YS5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIC4uLnJl
c3BvbnNlRGF0YSwKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGxldCBy
ZXNwb25zZSA9IGF3YWl0IFJ1bnRpbWVBZ2VudC5hd2FpdFByb21pc2UoZmV0Y2hSZXNwb25zZS5y
ZXN1bHQub2JqZWN0SWQsIHRydWUpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJSZXNwb25zZSBkZXRhaWxzOiIpOworICAgICAgICAgICAgICAgIGxvZ1Jlc3BvbnNlKHJlc3Bv
bnNlLnJlc3VsdC52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZS5UZXh0IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJJbnRlcmNlcHQgcmVx
dWVzdCB3aXRoIHRleHQgY29udGVudC4iLAorICAgICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92
ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7CisgICAgICAgICAgICBjb250
ZW50OiBgUEFTUyAtIE9WRVJSSURERU4gVEVYVGAsCisgICAgICAgICAgICBiYXNlNjRFbmNvZGVk
OiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAg
ICBzdGF0dXM6IDk4NywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPdmVycmlkZSBTdGF0dXMg
VGV4dCIsCisgICAgICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAgICAgIlgtT3ZlcnJp
ZGUtSGVhZGVyLTEiOiAiT3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTEiLAorICAgICAgICAgICAgICAg
ICJYLU92ZXJyaWRlLUhlYWRlci0yIjogIk92ZXJyaWRlLUhlYWRlci1WYWx1ZS0yIiwKKyAgICAg
ICAgICAgIH0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuSmF2YVNjcmlw
dCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiSW50ZXJjZXB0IHJlcXVlc3Qgd2l0aCBqYXZhc2Ny
aXB0IGNvbnRlbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQo
KWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgY29udGVudDogYC8qIFBB
U1MgKi8gKGZ1bmN0aW9uKCkgeyAvKiBPVkVSUklEREVOICovIH0pKCk7YCwKKyAgICAgICAgICAg
IGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWltZVR5cGU6ICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IiwKKyAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgc3Rh
dHVzVGV4dDogIlN1cGVyIE9LIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAgICAg
ICAgICAiWC1DdXN0b20tSGVhZGVyIjogIkhlYWRlciB2YWx1ZSIsCisgICAgICAgICAgICB9LAor
ICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkltYWdlIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJJbnRlcmNlcHQgcmVxdWVzdCB3aXRoIGltYWdlIGNvbnRlbnQuIiwKKyAgICAg
ICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQoKWAsCisgICAgICAgIHJlc3BvbnNl
RGF0YTogeworICAgICAgICAgICAgY29udGVudDogYnRvYSgiPGRhdGE+IiksCisgICAgICAgICAg
ICBiYXNlNjRFbmNvZGVkOiB0cnVlLAorICAgICAgICAgICAgbWltZVR5cGU6ICJpbWFnZS9wbmci
LAorICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0si
LAorICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBh
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRo
UmVzcG9uc2UuVVJMLlF1ZXJ5U3RyaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IG92
ZXJyaWRlcyB3aXRoIGRpZmZlcmVudCBxdWVyeSBzdHJpbmdzLiIsCisgICAgICAgIGV4cHJlc3Np
b246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKCI/cz0yIilgLAorICAgICAgICByZXNwb25zZURhdGE6
IHsKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgY29udGVu
dDogIlBBU1MiLAorICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAg
ICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAg
ICAgIGhlYWRlcnM6IHsiWC1FeHBlY3RlZCI6ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7
CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJl
cXVlc3RXaXRoUmVzcG9uc2UuVVJMLkZyYWdtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJU
ZXN0IG92ZXJyaWRlIGZvciBhIGxvYWQgd2l0aCBhIGZyYWdtZW50LiIsCisgICAgICAgIGV4cHJl
c3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKCIjZnJhZyIpYCwKKyAgICAgICAgcmVzcG9uc2VE
YXRhOiB7CisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBiYXNlNjRF
bmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisgICAg
ICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAg
ICAgICAgICBoZWFkZXJzOiB7IlgtRXhwZWN0ZWQiOiAiUEFTUyJ9LAorICAgICAgICB9LAorICAg
IH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlLjQwNCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBm
b3IgYSA0MDQgb3ZlcnJpZGUuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlk
ZUxvYWQoKWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgY29udGVudDog
IlBBU1MiLAorICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICBt
aW1lVHlwZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgc3RhdHVzOiA0MDQsCisgICAgICAg
ICAgICBzdGF0dXNUZXh0OiAiTm90IEZvdW5kIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsiWC1F
eHBlY3RlZCI6ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5U
ZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNl
LjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ5YWI1MGE1N2E0NGRhOGJjNmYxMThlYjVmZGViYmU3MTJhZjRlMWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKQEAgLTAsMCArMSwxOCBAQAoreworICAgICJ1cmki
OiAiPD9waHAgZWNobyAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSA/PiIsCisgICAgIm1ldGhvZCI6
ICI8P3BocCBlY2hvICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddOyA/PiIsCisgICAgImhlYWRl
cnMiOiB7Cis8P3BocCBmb3JlYWNoIChnZXRhbGxoZWFkZXJzKCkgYXMgJG5hbWUgPT4gJHZhbHVl
KSB7ID8+CisgICAgICAgICI8P3BocCBlY2hvICRuYW1lOyA/PiI6ICI8P3BocCBlY2hvICR2YWx1
ZTsgPz4iLAorPD9waHAgfSA/PiB9LAorICAgICJnZXQiOiB7Cis8P3BocCBmb3JlYWNoICgkX0dF
VCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAgICAgIjw/cGhwIGVjaG8gJG5hbWU7ID8+
IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8P3BocCB9ID8+CisgICAgfSwKKyAgICAicG9z
dCI6IHsKKzw/cGhwIGZvcmVhY2ggKCRfUE9TVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAg
ICAgICAgIjw/cGhwIGVjaG8gJG5hbWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8
P3BocCB9ID8+CisgICAgfSwKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1w
YWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVm
MjIxNjdlZGIwYmJlM2ZiMDcyYzQ3MWVjODIzNzQ5NTNhNWQyYTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRl
cmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+PC9oZWFkPgorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPgorICAgIDwvc2NyaXB0PgorICAgIDxib2R5
PgorICAgICAgICA8cD5PdmVycmlkZGVuIHBhZ2UgY29udGVudDwvcD4KKyAgICAgICAgPHNjcmlw
dD5hbGVydCgiUkVQTEFDRUQgSFRNTCBDT05URU5UIik7IFRlc3RQYWdlLmNvbXBsZXRlVGVzdCgp
Ozwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1zY3JpcHQuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc3OGVjNGUyNjExNTdkMzMwOTE5YzEzMjg5OTk1NTc3OTg5MzdlYWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCkBAIC0wLDAgKzEs
MiBAQAorYWxlcnQoIk9WRVJSSURFTiBvdmVycmlkZS5qcyBURVhUIik7CitUZXN0UGFnZS5kaXNw
YXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRl
c3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9j
b2wtdGVzdC5qcwppbmRleCBhMDI2NDlkNTZiZGIzZDI4NWMxZjBkN2Y4MDBjZmU0MTA4OTIyNjQx
Li44MzFhNjFmNjc4NWU0NDg4YjEyZDdkZmRlZjFmZTY2ZDM3NTUxMjIyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5q
cworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9j
b2wtdGVzdC5qcwpAQCAtODcsMTIgKzg3LDE0IEBAIFRlc3RQYWdlLnJ1blRlc3QgPSB3aW5kb3cu
cnVuVGVzdCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodHlwZW9mIHRlc3RGdW5jdGlvbiAhPT0gImZ1
bmN0aW9uIikgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHNlbmQgdGVzdCgpIGJlY2F1c2Ug
aXQgaXMgbm90IGEgZnVuY3Rpb24uIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbGV0IHVybCA9IHRlc3RSdW5uZXIuaW5z
cGVjdG9yVGVzdFN0dWJVUkw7CiAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgYWxlcnQoIkZhaWxl
ZCB0byBvYnRhaW4gaW5zcGVjdG9yIHRlc3Qgc3R1YiBVUkwuIik7CiAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
cnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZChpbml0aWFsaXplcnMpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlk
ZS1jb250aW51ZS1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbAppbmRleCA0NDgw
NjQyMDA0NDc2OTdmYjA3ZjQxNmU5Nzg2Mzk4ZTAwM2QyNDYwLi5kNjZlMTQwZWI3MTc4NjQ3YzM4
ODYyOWIwZDEzZTFhYTAxYTAzMGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRl
LWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKQEAgLTQ2LDcgKzQ2LDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgICAgICAvLyBMZXQgdGhlIGxvYWQgY29udGludWUuCiAgICAgICAgICAgICBhd2Fp
dCBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRF
dmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlc3BvbnNlUmVjZWl2ZWQifSksCi0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVy
Y2VwdENvbnRpbnVlIiwgcGFyYW1zOiB7cmVxdWVzdElkOiBtZXNzYWdlT2JqZWN0LnBhcmFtcy5y
ZXF1ZXN0SWR9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21t
YW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdENvbnRpbnVlIiwgcGFyYW1zOiB7cmVxdWVz
dElkOiBtZXNzYWdlT2JqZWN0LnBhcmFtcy5yZXF1ZXN0SWQsIHN0YWdlOiAicmVzcG9uc2UifX0p
LAogICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICBQcm90b2NvbFRlc3QucGFzcygiUmVzcG9u
c2UgcmVjZWl2ZWQuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24gYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2
NGUyYjBkOTk2N2NlYjFlZDdlMzJjZDE5MjkzNWRmMTc2NTgxMjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRl
ZC5qc29uCkBAIC0wLDAgKzEgQEAKK2ludGVyY2VwdGVkIHJlcXVlc3QKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggMzkzNWZlYjc0NGQ0N2NmNjFmZDNjMWYzMzg5MmJiZTdmMmFlOWI5Ni4uNmI5
MjY3ZjU5ODFiZjU2OGZlMmYxM2IzNzRjZWFkNGU3NDMyODRlZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTc0LDYgKzU3NCwxNyBAQCBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLXNjcmlw
dC10YWcuaHRtbCBbIEZhaWx1cmUgXQogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZS1yZXNwb25zZS1pbnNwZWN0b3Itb3ZlcnJpZGUuaHRtbCBbIEZhaWx1cmUgXQogaW5zcGVj
dG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRt
bCBbIFNraXAgXQogCisjIFJlcXVlc3QgaW50ZXJjZXB0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4g
V2ViS2l0MQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13
aXRoLXJlc3BvbnNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0bWwgWyBTa2lwIF0K
K2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNv
dXJjZS13aXRoLXJlc3BvbnNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbCBbIFNraXAgXQor
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJj
ZS13aXRoLWVycm9yLmh0bWwgWyBTa2lwIF0KKwogd2Via2l0Lm9yZy9iLzE2NDkzMyBodHRwL3Rl
c3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Vi
a2l0Lm9yZy9iLzE2NTU0MSBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1vdmVybGFw
LWV4dGVudC1ydGwuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401876</attachid>
            <date>2020-06-14 17:16:58 -0700</date>
            <delta_ts>2020-06-14 18:59:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200614171657.patch</filename>
            <type>text/plain</type>
            <size>113302</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTk1MjMwNmRlNGQ3MDNlYWNkY2VkYTliYzFlNjUxYzg0OGFmNGE4Li4xMjhjMTk4ZmE5YTczMzk1
MDYyZTNiNTg3NDkwNTJjMTVhYTZmNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0xMSAgUGF1bG8gTWF0
b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBpbmNsdWRlIHRv
IEpTT05PYmplY3QuY3BwIC0gbm9uLXVuaWZpZWQgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGM5MDI3
ZjM1ZDA3ZjcyOTQwMjVmY2Y3ZGY5NjM5MzQzYTllNmM5Li40YWFlMGRiN2JhOTA4Mzg0N2ExYTc2
OWNkMWJjY2Y5ZTg2N2U1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjAtMDYt
MDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAg
cHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90
aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVs
ZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3Qn
IGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGlu
dWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1mcmFnbWVudC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2Uu
aHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hv
dWxkSW50ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6Omlu
dGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNv
bnRpbnVlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0Q29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVz
dDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdDo6Y29udGludWVXaXRoT3JpZ2lu
YWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6UGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3Q6OmNvbnRpbnVlV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0w
Ni0xMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcHJvdmUgdXJs
LXNldHRlcnMuaHRtbCBXUFQgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMDFlZmUz
ZDJmMGU5ODg1NjU3NDE5ZDIxNzBiYTBkYzRlNWNjNzU0NC4uZjUyZmQ5ZThiMmUwNzE1YmQ2Y2Rj
MDQ0NzU5MTM0NDg2YzIyZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMjAtMDYtMDMgIFBhdmVsIEZlbGRtYW4gPHBhdmVsLmZlbGRtYW5AZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3
b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRX
aXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVkLCBt
b2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAg
ICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5hZGRMb2NhbFJlc291cmNlT3ZlcnJpZGUpOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlbW92ZUxvY2FsUmVzb3VyY2VPdmVycmlkZSk6
CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVk
KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXNwb25zZUludGVyY2Vw
dGVkKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlUmVzb3Vy
Y2VPdmVycmlkZURpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5OZXR3b3JrT2JzZXJ2ZXIucHJv
dG90eXBlLnJlcXVlc3RJbnRlcmNlcHRlZCk6CisKIDIwMjAtMDYtMTAgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRleHQgaW5wdXRz
IHNob3VsZCBub3Qgc3BlbGxjaGVjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlN2Y4NDlkNmY4ODczYjA3NjFiZDg1
YjRjMDM2NTZhOTkwYWE5NWNjLi5iY2RiNDZlM2FlOTIyZTMxYjQzMzBlZmJmY2EyNmQ5Y2YxZjk3
YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTAzICBQYXZlbCBGZWxkbWFu
ICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50
cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVz
dCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4g
SXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0Cisg
ICAgICAgIGNhbiBiZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0
YWdlIGVudW0gY2FuIG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2
YWx1ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKToK
KwogMjAyMC0wNi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIE1lZGlhVXNhZ2VNYW5hZ2VyQ29jb2Egc2hvdWxkIHVzZSBhIGRpZmZl
cmVudCBVU1ZpZGVvVXNhZ2UgaW5pdGlhbGl6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KaW5kZXggZjI0MjVkZDZhZmMw
ZWZiZjFkMTE1MjIwZmQ0MjQ2YWZlMmZiOTJlMS4uNjVhYjIwOTJiMGZmZDBlYWQzZGExZGRjY2Qz
OThkNGY0MTc5ZjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9OZXR3b3JrLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KQEAgLTE1NSw3ICsxNTUsMTMgQEAKICAgICAgICAg
ICAgICJpZCI6ICJOZXR3b3JrU3RhZ2UiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29y
ayByZXF1ZXN0LiIsCi0gICAgICAgICAgICAiZW51bSI6IFsicmVzcG9uc2UiXQorICAgICAgICAg
ICAgImVudW0iOiBbInJlcXVlc3QiLCAicmVzcG9uc2UiXQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAiaWQiOiAiUmVzb3VyY2VFcnJvclR5cGUiLAorICAgICAgICAgICAgInR5
cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3Rh
Z2VzIG9mIGEgbmV0d29yayByZXF1ZXN0LiIsCisgICAgICAgICAgICAiZW51bSI6IFsiR2VuZXJh
bCIsICJBY2Nlc3NDb250cm9sIiwgIkNhbmNlbGxhdGlvbiIsICJUaW1lb3V0Il0KICAgICAgICAg
fQogICAgIF0sCiAgICAgImNvbW1hbmRzIjogWwpAQCAtMjQ0LDEwICsyNTAsMTAgQEAKICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJBZGQgYW4gaW50ZXJjZXB0aW9uLiIsCiAgICAgICAgICAg
ICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlVSTCBwYXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcgaWYg
bm90IHNwZWNpZmllZCBvciBlbXB0eSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGlu
dGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBm
YWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1l
dGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBz
dGFnZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVh
dHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNTYsMTcgKzI2MiwyOSBAQAogICAgICAg
ICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdl
IiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5n
IG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Jl
Z2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9u
LiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29y
a1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50
IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVn
dWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7
CiAgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRDb250aW51ZSIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ29udGludWUgYW4gaW50ZXJjZXB0aW9uIHdpdGggbm8gbW9kaWZpY2F0
aW9ucy4iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIHJlcXVlc3Qgb3Ig
cmVzcG9uc2Ugd2l0aG91dCBtb2RpZmljYXRpb25zLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlw
ZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0
aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3Ig
cmVzcG9uc2UgdG8gY29udGludWUuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBm
b3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51
ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdv
cmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0byBjb250aW51ZS4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgaW50
ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRlZCBvbmUuIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRy
ZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRl
cmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFs
IjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0
cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdo
IG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEsIGJhc2U2NC1lbmNvZGVkLiIgfQog
ICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yODIsNiArMzAwLDI3IEBA
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVz
IHRleHQuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBh
c3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0KICAgICAgICAgICAg
IF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0
UmVxdWVzdFdpdGhSZXNwb25zZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvdmlk
ZSByZXNwb25zZSBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVxdWVzdC4gUmVxdWVzdCBjb21wbGV0ZWx5
IGJ5cGFzc2VzIHRoZSBuZXR3b3JrIGluIHRoaXMgY2FzZSBhbmQgaXMgaW1tZWRpYXRlbHkgZnVs
ZmlsbGVkIHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVx
dWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBO
ZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1
ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTUlN
RSBUeXBlIGZvciB0aGUgZGF0YS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0
dXMiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3Rh
dHVzIGNvZGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0
LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFk
ZXJzIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0UmVxdWVzdFdpdGhFcnJvciIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmFpbCBy
ZXF1ZXN0IHdpdGggZ2l2ZW4gZXJyb3IgdHlwZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1
ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5l
dHdvcmsgcmVxdWVzdCB0byBmYWlsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVy
cm9yVHlwZSIsICIkcmVmIjogIlJlc291cmNlRXJyb3JUeXBlIiwgImRlc2NyaXB0aW9uIjogIkRl
bGl2ZXIgZXJyb3IgcmVhc29uIGZvciB0aGUgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAgICAgICAg
ICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpAQCAtMzU3LDkgKzM5Niwx
NyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNo
ZWRSZXNvdXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAg
ICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
cmVxdWVzdEludGVyY2VwdGVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3
aGVuIEhUVFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3Qg
cmVzcG9uZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+LCA8Y29k
ZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9jb2RlPmAgb3IgPGNvZGU+TmV0d29yay5p
bnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byByZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAor
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxp
ZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVmIjogIlJlcXVlc3QiLCAiZGVzY3JpcHRp
b24iOiAiT3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlz
IGlzIGNvbnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewog
ICAgICAgICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRlcmNlcHRlZCIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2Vw
dGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJj
ZXB0Q29udGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8
L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29u
dGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2Rl
PmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVz
IjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRz
IHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4i
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IGVkNzYzYzExZWI5NTY0NmY2M2VjZjhkZGE3MDhhYjg4NDE0ZjMy
OTAuLjZjYjU5ZWNlZWE0ZWIyZTgxNjVlOTU5NjQ0ODM3NjY1NjExZmE5MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC04MTEsMTAgKzgxMSwxNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhYwogICAgIH0KIH0K
IAotYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
dGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKLSAgICAgICAg
cmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CisgICAg
ICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50
ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmIChhdXRvKiBuZXR3
b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKKyAg
ICAgICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNSw2ICs4MzIsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAo
YXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0Fn
ZW50KCkpCisgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdU
Rk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3Jr
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBjN2I2NmJhMTE1NWQ5MWIzYzVlMGUzMTJlMTRiZDJmZTczMjg2ZDI1Li5kZjkzOTA1YjQ1
YmFlNGM3NGE3MWQxZWFlODljMTI1ZTAxODNhMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKQEAgLTIzNCw4ICsyMzUsMTAg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4pOwpAQCAtNDQyLDggKzQ0NSwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3Vy
Y2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wg
d2lsbEludGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
Jiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTEyNTcs
MTEgKzEyNjIsMTkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJgogICAgIHdpbGxEZXN0cm95Q2Fj
aGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxJbnRlcmNl
cHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgICAgIHJl
dHVybiB3aWxsSW50ZXJjZXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0
dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1
ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyNzMsNiArMTI4NiwxMyBAQCBpbmxp
bmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVy
JiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KCpsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOwor
ICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckZyYW1lKGxvYWRlci5mcmFtZSgpKSkKKyAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXggOTU0YWFmMTIxYTlmYTUwN2Q4
M2JjMTBhZTM3ZGUxZjEyOGY3ZGNmYy4uZTM4ZWYzOThlN2U5YWZjMWUwMWE1NGI5Y2U2OGZjMjM1
OThlOTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMwLDExICszMCwyMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChmcmFtZSwgcmVxdWVzdCk7Cit9CisK
IGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmIGhhbmRsZXIpCit7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNl
cHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50
aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGI2N2U4OWI4
MGI0ZTdhODU4NmNhYzgxYWRlNWQ1OGExYmNiMGQ0MzEuLmEzMmY4NzdlYWEwNGYyN2QxMjEyNzBj
ZmY1YWNjM2IwMzJjMWM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDE0ICszNiwyNyBA
QCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKK2lubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoKmZyYW1lLCByZXF1ZXN0KTsKK30KKwogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSog
ZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CkBAIC01Myw2ICs2NiwxMiBAQCBpbmxpbmUgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lKgogICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KCpmcmFtZSwgcmVzcG9uc2UpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQor
eworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVy
Y2VwdFJlcXVlc3QobG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAg
IEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDJjZjQ5ODhm
MTMyMjJiZTU0MThiMGEyMzExNmI4ZGM5NmIxZjgzZjcuLjAwOWFiNjQ2MDlkM2YyMWYzMDYzMThk
ZjUxZWUwYTViMDdlYzJhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SFRUUEhlYWRlck1hcC5oIgpAQCAtNDY1LDYgKzQ2Niw3IEBAIHN0YXRpYyBJbnNwZWN0b3JQYWdl
QWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvCiB7CiAgICAgaWYgKHJlc291cmNlKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFn
ZW50OjppbnNwZWN0b3JSZXNvdXJjZVR5cGUoKnJlc291cmNlKTsKKwogICAgIHJldHVybiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CiB9CiAKQEAgLTg0MCwxMiArODQyLDEzIEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBt
X3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAgICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFy
KCk7CiAKKyAgICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIGNvbnRpbnVlUGVuZGlu
Z1Jlc3BvbnNlcygpOwogCiAgICAgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoZmFsc2UpOwog
fQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwp
Citib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwsIE5l
dHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UpCiB7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwogCkBAIC04NTQsNiArODU3LDExIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Zm9yIChhdXRvJiBpbnRlcmNlcHQgOiBtX2ludGVyY2VwdHMpIHsKKyAgICAgICAgaWYgKGludGVy
Y2VwdC5uZXR3b3JrU3RhZ2UgIT0gbmV0d29ya1N0YWdlKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChpbnRlcmNlcHQudXJsLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCiAgICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9IGludGVyY2VwdC5pc1Jl
Z2V4ID8gQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6UmVnZXggOiBD
b250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpFeGFjdFN0cmluZzsKICAg
ICAgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVJlZ3VsYXJF
eHByZXNzaW9uRm9yU2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGludGVyY2VwdC5jYXNlU2Vu
c2l0aXZlLCBzZWFyY2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJlZ2V4Lm1hdGNoKHVybFN0
cmluZykgIT0gLTEpCkBAIC04NjMsNiArODcxLDEzIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpCit7Cisg
ICAgZm9yIChhdXRvJiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3Rz
LnZhbHVlcygpKQorICAgICAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxS
ZXF1ZXN0KCk7CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7
CiAgICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRl
cmNlcHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI4LDE4ICsxMDQzLDE4IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwog
Ci0gICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlv
bkVuYWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAg
Y29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykK
K3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3Rh
Z2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
b3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAg
ICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3
b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93
biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7
CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3Ry
aW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNDgs
MjEgKzEwNjMsMTggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlv
bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICAgICAgaW50ZXJjZXB0
LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25h
bElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsK
LQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRl
cmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1f
aW50ZXJjZXB0cy5hcHBlbmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCi0gICAgICAgIGVycm9y
U3RyaW5nID0gIkludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVh
ZHkgZXhpc3RzIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcmNlcHQgZm9yIGdpdmVu
IHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIGFscmVhZHkgZXhpc3RzIl9zOwog
fQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJp
bmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1v
dmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChu
ZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdl
U3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtT
dGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5l
dHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3Jr
U3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9z
LCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50
ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNzEsMTkgKzEwODMsMjcgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFMKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5p
c1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVy
Y2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRlcmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0
YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5yZW1vdmVBbGwoaW50ZXJjZXB0
KSkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpbnRlcmNlcHQgZm9yIGdpdmVuIHVy
bCBhbmQgZ2l2ZW4gaXNSZWdleCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBp
bnRlcmNlcHQgZm9yIGdpdmVuIHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIl9z
OwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OndpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCkpOworICAgIHJldHVybiBzaG91
bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KQorICAgICAg
ICB8fCBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25z
ZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1faW50ZXJj
ZXB0aW9uRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNob3Vs
ZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpOwogfQogCiBi
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkxLDcgKzExMTEsMjEgQEAgYm9vbCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51
cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSwgTmV0d29y
a1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9l
bmFibGVkKTsKKyAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKKworICAgIFN0cmlu
ZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChsb2FkZXIuaWRlbnRp
ZmllcigpKTsKKyAgICBpZiAobV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY29udGFpbnMocmVx
dWVzdElkKSkgeworICAgICAgICBoYW5kbGVyKGxvYWRlci5yZXF1ZXN0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNldChyZXF1ZXN0
SWQsIG1ha2VVbmlxdWU8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+KCZsb2FkZXIsIFdURk1vdmUo
aGFuZGxlcikpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVk
KHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3Qo
KSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCkBAIC0xMTExLDE1ICsxMTQ1LDYzIEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VJbnRl
cmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25z
ZSwgbnVsbHB0cikpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IG5ldHdvcmtTdGFnZVN0cmluZykKIHsKLSAgICBhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7Ci0gICAgaWYg
KCFwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVs
cGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtT
dGFnZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29y
a1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzd2l0Y2ggKG5ldHdvcmtTdGFnZS52YWx1ZSgpKSB7CisgICAgY2FzZSBOZXR3b3Jr
U3RhZ2U6OlJlcXVlc3Q6CisgICAgICAgIGlmIChhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0
ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpKQorICAgICAgICAg
ICAgcGVuZGluZ0ludGVyY2VwdFJlcXVlc3QtPmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRp
bmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgTmV0d29ya1N0YWdlOjpSZXNwb25zZToKKyAgICAgICAgaWYgKGF1dG8g
cGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRh
a2UocmVxdWVzdElkKSkKKyAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVz
cG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVu
IHJlcXVlc3RJZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KIAotICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZFdpdGhP
cmlnaW5hbFJlc3BvbnNlKCk7Cit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
V2l0aFJlcXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBKU09O
OjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBw
ZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElk
KTsKKyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8mIGxvYWRlciA9ICpwZW5kaW5nUmVxdWVz
dC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBsb2FkZXIu
cmVxdWVzdCgpOworICAgIGlmICh1cmwpCisgICAgICAgIHJlcXVlc3Quc2V0VVJMKFVSTCh7IH0s
ICp1cmwpKTsKKyAgICBpZiAobWV0aG9kKQorICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2Qo
Km1ldGhvZCk7CisgICAgaWYgKGhlYWRlcnMpIHsKKyAgICAgICAgSFRUUEhlYWRlck1hcCBleHBs
aWNpdEhlYWRlcnM7CisgICAgICAgIGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDogKmhlYWRlcnMp
IHsKKyAgICAgICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1
ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAgICAgICAgICAgIGV4cGxpY2l0SGVhZGVy
cy5hZGQoa2V5LCBoZWFkZXJWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdC5zZXRI
VFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7CisgICAgfQorICAgIGlm
IChwb3N0RGF0YSkgeworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICBp
ZiAoIWJhc2U2NERlY29kZSgqcG9zdERhdGEsIGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gcG9zdERhdGEiX3M7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0
YTo6Y3JlYXRlKGJ1ZmZlcikpOworICAgIH0KKyAgICAvLyBGSVhNRTogZmlndXJlIG91dCBob3cg
dG8gaWRlbnRpZnkgd2hlbiBhIHJlcXVlc3QgaGFzIGJlZW4gb3ZlcnJpZGRlbiB3aGVuIHdlIGFk
ZCB0aGlzIHRvIHRoZSBmcm9udGVuZC4KKyAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRo
UmVxdWVzdChyZXF1ZXN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVy
Y2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29u
c3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3Rh
dHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQpAQCAtMTE1OCw2ICsxMjQwLDcg
QEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KKwogICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIH0gZWxzZQogICAgICAgICBvdmVycmlkZURhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQudXRm
OCgpLmxlbmd0aCgpKTsKQEAgLTExNjUsNiArMTI0OCw5MiBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29ucwogICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZChvdmVycmlkZVJlc3Bv
bnNlLCBvdmVycmlkZURhdGEpOwogfQogCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5j
b2RlZCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgaW50IHN0YXR1cywgY29uc3QgU3RyaW5nJiBz
dGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QmIGhlYWRlcnMpCit7CisgICAgYXV0byBwZW5k
aW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsK
KyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Np
bmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBsb2FkZXIg
PSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgaWYgKCFsb2FkZXItPmlkZW50
aWZpZXIoKSkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZnVsZmlsbCByZXF1
ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgaWYgKGJhc2U2NEVu
Y29kZWQpIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICAgICAgaWYgKCFi
YXNlNjREZWNvZGUoY29udGVudCwgYnVmZmVyKSkgeworICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBjb250ZW50Il9zOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5ndGgoKSk7CisKKyAg
ICAvLyBNaW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9yIC0gcmVwb3J0IGRpZFJlY2VpdmVSZXNw
b25zZSAmIGRpZEZpbmlzaExvYWRpbmcuCisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShw
ZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXItPnVybCgpLCBtaW1lVHlwZSwgZGF0YS0+c2l6ZSgpLCBT
dHJpbmcoKSk7CisgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJj
ZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOworICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0
YXR1cyk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoc3RhdHVzVGV4dCk7CisgICAg
SFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1
ZV0gOiBoZWFkZXJzKSB7CisgICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAgICAgaWYg
KHZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICBleHBsaWNpdEhlYWRl
cnMuYWRkKGtleSwgaGVhZGVyVmFsdWUpOworICAgIH0KKyAgICByZXNwb25zZS5zZXRIVFRQSGVh
ZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7CisgICAgcmVzcG9uc2Uuc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5
cGUoKSk7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIs
IGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCksIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7
CisgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1
ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlU3RyaW5nKQoreworICAgIGF1dG8gcGVuZGlu
Z1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7Cisg
ICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGxvYWRlciA9ICpwZW5kaW5nUmVxdWVzdC0+
bV9sb2FkZXIuZ2V0KCk7CisgICAgaWYgKGxvYWRlci5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7
CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBhYm9ydCByZXF1ZXN0LCBpdCBoYXMg
YWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJl
c291cmNlRXJyb3JUeXBlPihlcnJvclR5cGVTdHJpbmcpOworICAgIGlmICghZXJyb3JUeXBlKSB7
CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBlcnJvclR5cGU6ICJf
cywgZXJyb3JUeXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CisgICAgc3dpdGNoIChlcnJvclR5cGUudmFsdWUoKSkgeworICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkdlbmVy
YWw6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCBsb2FkZXIudXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNzQ29udHJvbDoKKyAg
ICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IGxvYWRlci51cmwoKSwgIkFjY2VzcyBkZW5pZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFj
Y2Vzc0NvbnRyb2wpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpDYW5jZWxsYXRpb246CisgICAgICAgIGVy
cm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXIu
dXJsKCksICJSZXF1ZXN0IGNhbmNlbGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxs
YXRpb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0OgorICAgICAgICBlcnJvciA9IFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLnVybCgpLCAiUmVx
dWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLnVybCgpLCAiUmVxdWVzdCBpbnRlcmNl
cHRlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBsb2FkZXIuZGlkRmFpbChlcnJvcik7Cit9CisKIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewog
ICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAi
dGV4dC8iKQpAQCAtMTE4MSw2ICsxMzUwLDcgQEAgUmVmPFRleHRSZXNvdXJjZURlY29kZXI+IElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIoY29uc3QgU3RyaW5nJgogCiAg
ICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKG1pbWVUeXBlKSkKICAgICAg
ICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShtaW1lVHlwZSwgIlVURi04Iik7
CisKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsK
ICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBs
aWNhdGlvbi94bWwiX3MpOwogICAgICAgICBkZWNvZGVyLT51c2VMZW5pZW50WE1MRGVjb2Rpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oCmluZGV4IGJmZDEzMWU5YjU4NTZjODRkYTc3MjQ4MDVlNzEzOTdiN2M3
NDg2YTkuLjAzYjRjYmE0NTIwMWE1ZGYwM2RkNmYyOGQ4ZmYzMDU2NjE0NjYwYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuaApAQCAtODgsMTAgKzg4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlcmlhbGl6
ZWRDZXJ0aWZpY2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJp
bmcqIHNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZSkgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlV2ViU29j
a2V0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyog
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JikgZmluYWw7CiAgICAgdm9pZCBzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3Ry
aW5nJiwgYm9vbCBlbmFibGVkKSBmaW5hbDsKLSAgICB2b2lkIGFkZEludGVyY2VwdGlvbihFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBj
b25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykgZmlu
YWw7Ci0gICAgdm9pZCByZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwg
Y29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgaW50ZXJj
ZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkgZmluYWw7
CisgICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIGNhc2VTZW5z
aXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlSW50ZXJj
ZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0
d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBp
c1JlZ2V4KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5n
KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogdXJsLCBjb25zdCBTdHJpbmcqIG1l
dGhvZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcqIHBvc3REYXRh
KSBmaW5hbDsKICAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0
RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0
IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKSBmaW5hbDsK
KyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYg
c3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0JiBoZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lk
IGludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAt
MTE4LDkgKzEyMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoRG9j
dW1lbnRMb2FkZXImKTsKICAgICB2b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHZvaWQg
ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKLSAgICBib29sIHdpbGxJ
bnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIGJvb2wgd2lsbElu
dGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHNob3VsZEludGVyY2Vw
dFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNl
cHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBpbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxv
YWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYp
OwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24mLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwogICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wg
Y2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKTsKQEAgLTE0MCw3ICsx
NDUsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVz
b3VyY2VUeXBlKTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCk7CisgICAgdXNpbmcg
TmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdl
OworICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCwgTmV0d29ya1N0YWdlKTsKKyAgICB2b2lk
IGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXNw
b25zZXMoKTsKIAogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKQEAgLTE1Myw2ICsxNjAsMzEgQEAgcHJpdmF0ZToKIAogICAgIGRv
dWJsZSB0aW1lc3RhbXAoKTsKIAorICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0IHsK
KyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOwor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIFBl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0KFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbG9hZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgICAgICAgICAgOiBtX2xvYWRlcihsb2FkZXIpCisgICAgICAgICAgICAsIG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIHsg
fQorCisgICAgICAgIHZvaWQgY29udGludWVXaXRoT3JpZ2luYWxSZXF1ZXN0KCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFtX2xvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAg
ICAgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKG1fbG9hZGVyLT5yZXF1ZXN0KCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb250aW51ZVdpdGhSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb21wbGV0aW9u
SGFuZGxlcihyZXF1ZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRS
ZXF1ZXN0KCkgPSBkZWZhdWx0OworICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IG1fbG9h
ZGVyOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIH07CisKICAgICBjbGFzcyBQZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTIw
NCwxNSArMjM2LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGJv
b2wgY2FzZVNlbnNpdGl2ZSB7IHRydWUgfTsKICAgICAgICAgYm9vbCBpc1JlZ2V4IHsgZmFsc2Ug
fTsKKyAgICAgICAgTmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSB7IE5ldHdvcmtTdGFnZTo6UmVz
cG9uc2UgfTsKIAogICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVyY2Vw
dCYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1cmwgPT0gb3Ro
ZXIudXJsCiAgICAgICAgICAgICAgICAgJiYgY2FzZVNlbnNpdGl2ZSA9PSBvdGhlci5jYXNlU2Vu
c2l0aXZlCi0gICAgICAgICAgICAgICAgJiYgaXNSZWdleCA9PSBvdGhlci5pc1JlZ2V4OworICAg
ICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdleAorICAgICAgICAgICAgICAg
ICYmIG5ldHdvcmtTdGFnZSA9PSBvdGhlci5uZXR3b3JrU3RhZ2U7CiAgICAgICAgIH0KICAgICB9
OwogICAgIFZlY3RvcjxJbnRlcmNlcHQ+IG1faW50ZXJjZXB0czsKKyAgICBIYXNoTWFwPFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0Pj4gbV9wZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5k
aW5nSW50ZXJjZXB0UmVzcG9uc2U+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXM7CiAKICAg
ICAvLyBGSVhNRTogSW5zcGVjdG9yTmV0d29ya0FnZW50IHNob3VsZCBub3QgYmUgYXdhcmUgb2Yg
c3R5bGUgcmVjYWxjdWxhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDc4NzNiZjk5YmQyMzQ5NjY0OGNiYzM0
NDcwNDg4MTgyMTU4OTRjODEuLjNhNzExMjc3YThhYTdjNGYwMzU5MGMyZmU1NzgzYTI0YWY4MmE2
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcApAQCAtODQxLDcgKzg0MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
CiAKICAgICByZXF1ZXN0LnVwZGF0ZVJlZmVycmVyUG9saWN5KGRvY3VtZW50KCkgPyBkb2N1bWVu
dCgpLT5yZWZlcnJlclBvbGljeSgpIDogUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93
bmdyYWRlKTsKIAotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHRSZXF1ZXN0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgaWYgKElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdCgmZnJhbWUsIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXF1ZXN0LnNldENhY2hpbmdQb2xpY3koQ2FjaGlu
Z1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKTsKIAogICAgIGF1dG8mIHBhZ2UgPSAqZnJhbWUucGFn
ZSgpOwpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgVmVjdG9yPFJlZjxTVkdJbWFnZT4+IENhY2hlZFJl
c291cmNlTG9hZGVyOjphbGxDYWNoZWRTVkdJbWFnZXMoKSBjb25zdAogCiBSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KQogewotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQor
ICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQoZnJhbWUoKSwg
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgIkluc3BlY3RvciBpbnRlcmNlcHQiX3MgfSk7CiAKICAg
ICBpZiAocmVxdWVzdC5jaGFyc2V0KCkuaXNFbXB0eSgpICYmICh0eXBlID09IENhY2hlZFJlc291
cmNlOjpUeXBlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5
bGVTaGVldCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDdkZTNjZDI1
MzlmYzNlNmY4YjY2OTcyNDNhMzc4OTU3YTU1MmE1NDUuLmEzMzg3MzQ0N2M5MGVjNjQzYmVlMzMz
MTViM2M5MmFkMWZiZmJjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCkBA
IC0xNTksOSArMTU5LDkgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS5kaXNhYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Lk5l
dHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZl
OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zNjQs
NyArMzY0LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRl
LnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJp
ZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVj
dG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAg
ICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2Uu
UmVzcG9uc2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZ
IChpT1MgMTMuMCk6IE5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0z
OTcsNyArMzk3LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJy
aWRlLnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3Zl
cnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVz
b3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5z
cGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAg
ICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3Rh
Z2UuUmVzcG9uc2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklM
SVRZIChpT1MgMTMuMCk6IE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3Qu
CkBAIC05MDgsMTIgKzkwOCwyMSBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElk
ZW50aWZpZXJNYXAuZGVsZXRlKHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICByZXF1
ZXN0SW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAg
ICAvLyBGSVhNRTogYWRkIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHN1cHBvcnQgdG8gdGhlIGZyb250
ZW5kLgorICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVz
dH0pOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQs
IHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbGV0IHVybCA9IFdJLnVybFdpdGhvdXRGcmFnbWVu
dChyZXNwb25zZS51cmwpOwogICAgICAgICBsZXQgbG9jYWxSZXNvdXJjZU92ZXJyaWRlID0gdGhp
cy5sb2NhbFJlc291cmNlT3ZlcnJpZGVGb3JVUkwodXJsKTsKICAgICAgICAgaWYgKCFsb2NhbFJl
c291cmNlT3ZlcnJpZGUgfHwgbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmRpc2FibGVkKSB7Ci0gICAg
ICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVlKHJlcXVlc3RJZCk7
CisgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVlLmludm9r
ZSh7CisgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMzc2LDcg
KzEzODUsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmws
CiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNl
U2Vuc2l0aXZlLAogICAgICAgICAgICAgaXNSZWdleDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlz
UmVnZXgsCi0gICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5O
ZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgIH07
CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLmFkZEludGVy
Y2VwdGlvbiAvIE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0x
NDMyLDQgKzE0NDEsNSBAQCBXSS5OZXR3b3JrTWFuYWdlci5FdmVudCA9IHsKICAgICBCb290c3Ry
YXBTY3JpcHREZXN0cm95ZWQ6ICJuZXR3b3JrLW1hbmFnZXItYm9vdHN0cmFwLXNjcmlwdC1kZXN0
cm95ZWQiLAogICAgIExvY2FsUmVzb3VyY2VPdmVycmlkZUFkZGVkOiAibmV0d29yay1tYW5hZ2Vy
LWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLWFkZGVkIiwKICAgICBMb2NhbFJlc291cmNlT3ZlcnJp
ZGVSZW1vdmVkOiAibmV0d29yay1tYW5hZ2VyLWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLXJlbW92
ZWQiLAorICAgIFJlcXVlc3RJbnRlcmNlcHRlZDogIm5ldHdvcmstbWFuYWdlci1yZXF1ZXN0LWlu
dGVyY2VwdGVkIgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcwppbmRleCA1OWMyOWM5
YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgwMGFhLi5mZTg4MjlhNzFiZmQwZWVkODU2YjQx
YzNhYWVjZTZhZTdmMWExNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCkBAIC0x
MDgsNiArMTA4LDExIEBAIFdJLk5ldHdvcmtPYnNlcnZlciA9IGNsYXNzIE5ldHdvcmtPYnNlcnZl
ciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlzcGF0Y2hlcgogICAgICAgICAvLyBGSVhNRTog
Tm90IGltcGxlbWVudGVkLgogICAgIH0KIAorICAgIHJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0
SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXF1ZXN0SW50
ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QpOworICAgIH0KKwogICAg
IHJlc3BvbnNlSW50ZXJjZXB0ZWQocmVxdWVzdElkLCByZXNwb25zZSkKICAgICB7CiAgICAgICAg
IFdJLm5ldHdvcmtNYW5hZ2VyLnJlc3BvbnNlSW50ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1
ZXN0SWQsIHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwZGRiMzUzMzQ0Mzg3ODRmYjIxNmZk
ZjcxMDg0Mjk3MjZmMmM2NjY3Li5mYWExZTE2MGY3NDhjYjJlMzVjMGQ2N2QwMTc2OWJhZTM4MmNm
ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBAIC0yMjgsNiAr
MjI5LDEzIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxv
YWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAoIXRyeUxvYWRpbmdV
c2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykp
IHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2No
ZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mi
KTsKKworICAgICAgICBpZiAoIXJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciAmJiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3QocmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgcmVzb3VyY2VM
b2FkZXIucmVxdWVzdCgpKSkgeworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9hZGVyLCBbdGhpcywgcHJvdGVjdGVk
UmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmUHRyKCZyZXNvdXJjZUxvYWRlciksIHRyYWNraW5nUGFy
YW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcmVzb3Vy
Y2VdKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIHNj
aGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcygqcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIsIHJl
cXVlc3QsIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZTBkNDE1YWMzMmU4NzI0YmRkZTRmNGY1NzFlMWJjY2NlYjhlZmIz
Yi4uNjFjZTk0NDk4NTZmMWExNDQ5MTE0NWQ0YWM2M2RjMzI2MzJlYWMwMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQzIEBACisyMDIwLTA2LTAzICBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWls
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNl
cHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUg
TmV0d29yaworICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNl
cHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVk
LCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQor
ICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGludWUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291
cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVy
dGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRo
LWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJl
c291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
d2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQu
anM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90
b2NvbC10ZXN0LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNl
LW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNvbjogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTA2LTExICBPcmlvbCBC
cnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBSZWltcG9y
dCBXUFQgdGVzdHMgcmVtb3ZlZCBpbiByMjYyODA5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjBlOGVlMGNk
MDEyOTMyODBmOGE4ZDM0ZjkyNDVmZjExYWQ1NTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1
ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitDT05TT0xFIE1FU1NBR0U6IFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbjogQWJvcnRFcnJvcjogRmV0Y2ggaXMgYWJvcnRlZAorQ09O
U09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IEFib3J0RXJyb3I6IEZl
dGNoIGlzIGFib3J0ZWQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gb2YgdGhlIGFib3J0ZWQg
cmVxdWVzdC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkFib3J0ZWQK
K1RyaWdnZXJpbmcgbG9hZC4uLgorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgor
RXJyb3I6IFVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJv
Y2Vzc2VkCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RX
aXRoRXJyb3IuQWJvcnRlZAorVHJpZ2dlcmluZyBsb2FkLi4uCitQQVNTOiBTaG91bGQgcHJvZHVj
ZSBhbiBleGNlcHRpb24uCitFcnJvcjogVW5hYmxlIHRvIGFib3J0IHJlcXVlc3QsIGl0IGhhcyBh
bHJlYWR5IGJlZW4gcHJvY2Vzc2VkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1y
ZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRkZjNiMjk0OTAzZWU2YjQxYTk1NTliZmEyYWFjZDk3
OWM0ZWJmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sCkBAIC0wLDAgKzEsNzcg
QEAKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBmZXRjaEFuZEFib3J0KCkgeworICAgIGxl
dCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9vdmVycmlkZS50eHQiOworICAgIGxldCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxl
cigpOworICAgIGxldCB7IHNpZ25hbCB9ID0gY29udHJvbGxlcjsKKyAgICBmZXRjaCh1cmwsIHsg
c2lnbmFsIH0pOworICAgIGNvbnRyb2xsZXIuYWJvcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UiKTsKKworICAgIE5ldHdvcmtBZ2VudC5h
ZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQiLAorICAgICAgICBz
dGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3Qs
CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuQWJvcnRlZCIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCBmdWxmaWxscyBhYm9ydGVk
IHJlcXVlc3QiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgbGV0IFtyZXF1ZXN0
SW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAg
V0kubmV0d29ya01hbmFnZXIuYXdhaXRFdmVudChXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1
ZXN0SW50ZXJjZXB0ZWQpLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoYGZldGNoQW5kQWJvcnQoKWApLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAg
IGF3YWl0IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGFzeW5jICgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25z
ZS5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRlcmNl
cHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBzdGFnZTogSW5z
cGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRlbnQ6ICJGQUlMIiwKKyAgICAgICAgICAgICAgICAgICAgYmFzZTY0
RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFp
biIsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAgICAg
ICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSwKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3RXaXRoRXJyb3IuQWJvcnRlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMg
cmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCByZWplY3RzIGFib3J0ZWQgcmVxdWVzdCIsCisgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dl
cmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQgW3JlcXVlc3RJbnRlcmNlcHRlZEV2ZW50
XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCks
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgZmV0Y2hBbmRB
Ym9ydCgpYCksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9y
VGVzdC5leHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4geworICAgICAgICAgICAgICAgIGF3YWl0
IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yLmludm9rZSh7CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdEludGVyY2VwdGVkRXZlbnQuZGF0YS5yZXF1
ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIGVycm9yVHlwZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuUmVzb3VyY2VFcnJvclR5cGUuR2VuZXJhbCwKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5U
ZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBvZiB0aGUgYWJvcnRl
ZCByZXF1ZXN0LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGludWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA2NzY3
NWRhNjcyZGYyYmE4ZGM2ZDNlMTQ5NGNkYTUwODUwYTQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
Y29udGludWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1Rlc3QgcmVxdWVzdCBpbnRl
cmNlcHRpb24gdGhhdCBjb250aW51ZXMgcmVxdWVzdC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3Vp
dGU6IE5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBzZXRV
cAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51
ZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBjb250ZW50OgorZnVuY3Rpb24gbXlTY3Jp
cHRKUygpIHt9CisKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5Db250aW51ZVdyb25nU3RhZ2UKK1RyaWdnZXJpbmcgbG9hZC4uLgorUEFTUzogU2hvdWxk
IHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorRXJyb3I6IE1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQg
cmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlV3JvbmdJZAorVHJpZ2dlcmluZyBsb2FkLi4u
CitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCitFcnJvcjogTWlzc2luZyBwZW5k
aW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZlbiByZXF1ZXN0SWQKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2ZWZlMzcyNTYx
ZmZlMTJjNmU1ZTgwYzU5YmY5NTNhMmIzMmRhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRp
bnVlLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gZmV0Y2hE
YXRhKHVybCkKK3sKKyAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOworICAgIHJl
dHVybiBhd2FpdCByZXNwb25zZS50ZXh0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRl
cmNlcHRDb250aW51ZSIpOworICAgIAorICAgIE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24u
aW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9zY3JpcHQuanMiLAorICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFj
a2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVl
c3QuQ29udGludWUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaW50ZXJj
ZXB0aW9uIHRoYXQgY29udGludWVzIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCBpbnRlcmNlcHRDb250aW51ZSA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAg
IGxldCB7IHRhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0IH0gPSBldmVudC5kYXRhOworICAgICAg
ICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRDb250aW51ZS5pbnZva2UoeworICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNw
ZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVy
Y2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2Fp
dCBSdW50aW1lQWdlbnQuZXZhbHVhdGUoImZldGNoRGF0YSgncmVzb3VyY2VzL3NjcmlwdC5qcycp
Iik7CisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IFJ1bnRpbWVBZ2VudC5hd2FpdFByb21p
c2UocmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJSZXNwb25zZSBjb250ZW50OiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2cocmVzcG9uc2UucmVzdWx0LnZhbHVlKTsKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdElu
dGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5Db250aW51ZVdyb25nU3RhZ2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJl
cXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQgY29udGludWVzIHdpdGggdGhlIHdyb25nIHN0YWdlIiwK
KyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJU
cmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVk
RXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2Vw
dGVkKSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBmZXRj
aERhdGEoJ3Jlc291cmNlcy9zY3JpcHQuanMnKWApLAorICAgICAgICAgICAgXSk7CisKKyAgICAg
ICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGFzeW5jICgpID0+IHsK
KyAgICAgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUuaW52
b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRF
dmVudC5kYXRhLnJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3Rv
ckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3Qu
Q29udGludWVXcm9uZ0lkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGlu
dGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyB3aXRoIHRoZSB3cm9uZyBzdGFnZSIsCisgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmlu
ZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQgW3JlcXVlc3RJbnRlcmNlcHRlZEV2ZW50XSA9
IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5h
d2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgZmV0Y2hEYXRhKCdy
ZXNvdXJjZXMvc2NyaXB0LmpzJylgKSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICBh
d2FpdCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAg
ICAgICAgICAgYXdhaXQgTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVlLmludm9rZSh7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogJ3dyb25nSWQnLAorICAgICAgICAgICAgICAg
ICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJl
cXVlc3QsCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBp
bnRlcmNlcHRpb24gdGhhdCBjb250aW51ZXMgcmVxdWVzdC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU2MWIwOGQ5NjFkZWI5NzE5ZDgwZmI5NzJhNjdmNWVlMzAwM2Uy
NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI0IEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGluIGNvbWJpbmF0aW9uIHdpdGggZnJh
Z21lbnRzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRXaXRo
UmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5V
UkxXaXRob3V0RnJhZ21lbnRCYXNlbGluZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IFVS
TDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHls
ZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz9vbmUKK1Jlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291
cmNlbWFwLmNzcz9vbmUKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdC5VUkxXaXRoRnJhZ21lbnRCYXNlbGluZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1
ZXN0IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz90d28jZnJhZ21lbnQKK1Jlc3BvbnNlIFVS
TDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHls
ZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz90d28jZnJhZ21lbnQKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxBZGRGcmFnbWVudAorVHJpZ2dlcmlu
ZyBsb2FkLi4uCitSZXF1ZXN0IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcworUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzI2Zy
YWdtZW50CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3Qu
VVJMUmVtb3ZlRnJhZ21lbnQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBVUkw6IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc3R5bGVzaGVldC5j
c3MjZnJhZ21lbnQKK1Jlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdt
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzlmMWU5N2U1NzEzN2QxNTVl
MGY1ZDNiYjE2OGExZDM5YzU2ODI5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQuaHRt
bApAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRTdWJyZXNvdXJjZSh1
cmwpCit7CisgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7Cisg
ICAgbGluay5yZWwgPSAic3R5bGVzaGVldCI7CisgICAgbGluay5ocmVmID0gdXJsOworICAgIGRv
Y3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5p
bnRlcmNlcHRXaXRoUmVxdWVzdCIpOworICAgIE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24u
aW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIsCisgICAgICAgIHN0YWdlOiBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICB9KTsKKwor
ICAgIGZ1bmN0aW9uIGFkZEJhc2VsaW5lVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHBy
ZXNzaW9uLCBzZXR1cCwgdGVhcmRvd259KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24sCisgICAgICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJU
cmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgW3JlcXVlc3RFdmVudCwg
cmVzcG9uc2VFdmVudCwgZmV0Y2hSZXNwb25zZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgICAgIFdJLkZyYW1lLmF3YWl0RXZlbnQoV0kuRnJhbWUuRXZlbnQuUmVzb3Vy
Y2VXYXNBZGRlZCksCisgICAgICAgICAgICAgICAgICAgIFdJLlJlc291cmNlLmF3YWl0RXZlbnQo
V0kuUmVzb3VyY2UuRXZlbnQuUmVzcG9uc2VSZWNlaXZlZCksCisgICAgICAgICAgICAgICAgICAg
IFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAgICAgICAgICAgICAgICBdKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygnUmVxdWVzdCBVUkw6ICcgKyByZXF1
ZXN0RXZlbnQuZGF0YS5yZXNvdXJjZS51cmwpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCdSZXNwb25zZSBVUkw6ICcgKyByZXNwb25zZUV2ZW50LnRhcmdldC51cmwpOworICAg
ICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisgICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uo
e25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9uLCBzZXR1cCwgdGVhcmRvd24sIHVybH0pIHsK
KyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRp
b24sIHNldHVwLCB0ZWFyZG93biwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAg
ICAgICAgICAgIGxldCBbcmVxdWVzdEV2ZW50LCByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudCwgZmV0
Y2hSZXNwb25zZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJ
LkZyYW1lLmF3YWl0RXZlbnQoV0kuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCksCisgICAg
ICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01h
bmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkKSwKKyAgICAgICAgICAgICAgICAgICAgUnVu
dGltZUFnZW50LmV2YWx1YXRlKGV4cHJlc3Npb24pLAorICAgICAgICAgICAgICAgIF0pOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCdSZXF1ZXN0IFVSTDogJyArIHJlcXVlc3RF
dmVudC5kYXRhLnJlc291cmNlLnVybCk7CisKKyAgICAgICAgICAgICAgICBsZXQgW3Jlc3BvbnNl
RXZlbnQsIGludGVyY2VwdFJlc3BvbnNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAg
ICAgICAgICAgICAgV0kuUmVzb3VyY2UuYXdhaXRFdmVudChXSS5SZXNvdXJjZS5FdmVudC5SZXNw
b25zZVJlY2VpdmVkKSwKKyAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2Vw
dFdpdGhSZXF1ZXN0Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6
IHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdXJsLAorICAgICAgICAgICAgICAgICAgICB9KSwKKyAgICAgICAgICAgICAgICBd
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygnUmVzcG9uc2UgVVJMOiAnICsg
cmVzcG9uc2VFdmVudC50YXJnZXQudXJsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7Cisg
ICAgfQorCisKKyAgICBhZGRCYXNlbGluZVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxXaXRob3V0RnJhZ21lbnRCYXNlbGluZSIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVzcG9uc2UgdXJsIHdpdGhvdXQgZnJhZ21lbnQgLSBiYXNl
bGluZSIsCisgICAgICAgIGV4cHJlc3Npb246ICJsb2FkU3VicmVzb3VyY2UoJ3Jlc291cmNlcy9z
dHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz9vbmUnKSIsCisgICAgfSk7CisKKyAgICBhZGRC
YXNlbGluZVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dC5VUkxXaXRoRnJhZ21lbnRCYXNlbGluZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMg
cmVzcG9uc2UgdXJsIHdpdGggZnJhZ21lbnQgLSBiYXNlbGluZSIsCisgICAgICAgIGV4cHJlc3Np
b246ICJsb2FkU3VicmVzb3VyY2UoJ3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFw
LmNzcz90d28jZnJhZ21lbnQnKSIsCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMQWRkRnJhZ21lbnQiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRo
IFVSTCB3aXRoIGZyYWdtZW50IiwKKyAgICAgICAgZXhwcmVzc2lvbjogImxvYWRTdWJyZXNvdXJj
ZSgncmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzJykiLAorICAgICAgICB1cmw6ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzI2Zy
YWdtZW50IiwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxSZW1vdmVGcmFnbWVudCIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHRoYXQgcmVtb3ZlcyBm
cmFnbWVudCIsCisgICAgICAgIGV4cHJlc3Npb246ICJsb2FkU3VicmVzb3VyY2UoJ3Jlc291cmNl
cy9zdHlsZXNoZWV0LmNzcyNmcmFnbWVudCcpIiwKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIsCisg
ICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGlu
dGVyY2VwdGlvbiBpbiBjb21iaW5hdGlvbiB3aXRoIGZyYWdtZW50cy48L3A+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWlu
LXJlc291cmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjEyNTkwNDgzNWVmMTBiNmMwNjAz
NGY2MTVmM2RlZjExOGY5ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK0FMRVJUOiBPUklHSU5BTCBIVE1MIENPTlRFTlQK
K0FMRVJUOiBSRVBMQUNFRCBIVE1MIENPTlRFTlQKK092ZXJyaWRkZW4gcGFnZSBjb250ZW50CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIx
MjU5MDQ4MzVlZjEwYjZjMDYwMzRmNjE1ZjNkZWYxMThmOWVhYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMg
QEAKK0FMRVJUOiBPUklHSU5BTCBIVE1MIENPTlRFTlQKK0FMRVJUOiBSRVBMQUNFRCBIVE1MIENP
TlRFTlQKK092ZXJyaWRkZW4gcGFnZSBjb250ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jYTAxMGRlY2FmZTkxNDJhN2U4ZDJhZjc5MjU0YWE4YjI2MjFkN2M5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApAQCAt
MCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUg
PSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZSIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSB3aXRoIHJlc3BvbnNlIiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJNYWluIHJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNl
cHRpb24gb24gbmV4dCBwYWdlIGxvYWQgYW5kIGZ1bGZpbGxzIHJlcXVlc3QiLAorICAgICAgICBh
c3luYyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgTmV0d29ya0FnZW50LmFkZEludGVyY2Vw
dGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQu
RW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLk5l
dHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRh
OworICAgICAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAg
ICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgICAgICAgICBjb250
ZW50OiBgPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9gK2BzY3JpcHQ+PC9oZWFkPjxib2R5PjxwPk92ZXJyaWRk
ZW4gcGFnZSBjb250ZW50PC9wPjxzY3JpcHQ+YWxlcnQoIlJFUExBQ0VEIEhUTUwgQ09OVEVOVCIp
OyBUZXN0UGFnZS5jb21wbGV0ZVRlc3QoKTs8L2ArYHNjcmlwdD48L2JvZHk+PC9odG1sPmAsCisg
ICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwK
KyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFn
ZSh7aWdub3JlQ2FjaGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0
IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgbWFpbiByZXNvdXJjZSBsb2Fk
IHdpdGggcmVzcG9uc2UuPC9wPgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRNTCBDT05URU5U
Iik7PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3Vy
Y2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5MDcxNzk2OWFkNTI2
NmIyODg2NmE1YmJmNDBjZWNkNzNiNjM3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVz
b3VyY2UuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsu
aW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NYWluUmVzb3VyY2UiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIk1haW4gcmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiBv
biBuZXh0IHBhZ2UgbG9hZCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBh
d2FpdCBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAg
ICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IElu
c3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnNpbmdsZUZpcmVFdmVu
dExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVz
dH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRX
aXRoUmVxdWVzdC5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1wYWdlLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXdhaXQg
SW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVB
bGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5n
IHRoZSBtYWluIHJlc291cmNlIGxvYWQuPC9wPgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRN
TCBDT05URU5UIik7PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMDQxYzk1YWMyZjYwYWI4YmRiYzhkYjhhMjM2NWI4ODZhNzMzNmQ1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDg0IEBACitUZXN0
IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGFsdGVyaW5nIHJlcXVlc3QgcHJvcGVydGllcy4KKworCis9
PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBzZXRVcAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50
ZXJjZXB0UmVxdWVzdC5NZXRob2QKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxz
OgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhw
CisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBQT1NUCisgIFJlcXVlc3Qg
SGVhZGVyczoKKyAgICBDb250ZW50LUxlbmd0aDogMAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZERlbGV0ZQorVHJpZ2dlcmluZyBsb2FkLi4u
CitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9p
bnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6
IERFTEVURQorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6IDAKKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2ROb25TdGFu
ZGFyZAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVy
Y2VwdC1lY2hvLnBocAorICBNZXRob2Q6IE5PTlNUQU5EQVJECisgIFJlcXVlc3QgSGVhZGVyczoK
KyAgICBDb250ZW50LUxlbmd0aDogMAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZEVtcHR5CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3Qg
ZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1l
Y2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogR0VUCisgIFJl
cXVlc3QgSGVhZGVyczoKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdC5VUkwKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6
IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP25ld1VSTD12
YWx1ZQorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP25ld1VSTD12YWx1ZQorICBNZXRob2Q6
IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgIEdldDoKKyAgICBuZXdVUkw6IHZhbHVlCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMRnJhZ21lbnQK
K1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQt
ZWNoby5waHAKKyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFkZXJzOgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTEVtcHR5CitUcmlnZ2VyaW5n
IGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVGhlIFVSTCBjYW7igJl0IGJlIHNob3duCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuSGVhZGVycwor
VHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1l
Y2hvLnBocAorICBNZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgWC1WYWx1ZTog
b3ZlcnJpZGRlbgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LlBvc3REYXRhCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJ
OiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNw
b25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogUE9TVAorICBSZXF1ZXN0IEhlYWRlcnM6
CisgICAgQ29udGVudC1MZW5ndGg6IDE2CisgICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQKKyAgUG9zdDoKKyAgICB2YWx1ZTogb3ZlcnJpZGRlbgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUwMTgyODdkM2VkNDMwN2I0NjQ5Zjc0ZGEwZDA0YTNlNzA5YzM3ZmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbApAQCAtMCwwICsxLDE3OSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorYXN5
bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkKK3sKKyAgICB0cnkgeworICAgICAgICBsZXQgcmVz
cG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOworICAgICAgICAvLyBFdmFsIHRvIGFjY2VwdCB0cmFp
bGluZyBjb21hIEpTT04uCisgICAgICAgIGxldCBkYXRhID0gZXZhbCgnKCcgKyAoYXdhaXQgcmVz
cG9uc2UudGV4dCgpIHx8ICJ7fSIpICsgJyknKTsKKyAgICAgICAgZGF0YS5yZXNwb25zZVVSTCA9
IHJlc3BvbnNlLnVybDsKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICByZXR1cm4geyBlcnJvcjogZS5tZXNzYWdlIH07CisgICAgfQorfQorCithc3luYyBm
dW5jdGlvbiBwb3N0RGF0YSh1cmwpCit7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2go
dXJsLCB7CisgICAgICAgIG1ldGhvZDogIlBPU1QiLAorICAgICAgICBoZWFkZXJzOiB7CisgICAg
ICAgICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2Rl
ZCIsCisgICAgICAgIH0sCisgICAgICAgIGJvZHk6ICJ2YWx1ZT1vcmlnaW5hbCIsCisgICAgfSk7
CisgICAgLy8gRXZhbCB0byBhY2NlcHQgdHJhaWxpbmcgY29tYSBKU09OLgorICAgIGxldCBkYXRh
ID0gZXZhbCgnKCcgKyAoYXdhaXQgcmVzcG9uc2UudGV4dCgpIHx8ICJ7fSIpICsgJyknKTsKKyAg
ICBkYXRhLnJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsOworICAgIHJldHVybiBkYXRhOworfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0
ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKworICAgIE5ldHdv
cmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5w
aHAiLAorICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBsb2dSZXF1ZXN0KHJlc3Vs
dCkgeworICAgICAgICBsZXQgcmVxdWVzdCA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAgaWYgKHJl
cXVlc3QuZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgICR7cmVxdWVz
dC5lcnJvcn1gKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZyhgICBVUkk6ICR7cmVxdWVzdC51cml9YCk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKGAgIFJlc3BvbnNlIFVSTDogJHtyZXF1ZXN0LnJlc3BvbnNlVVJMfWApOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBNZXRob2Q6ICR7cmVxdWVzdC5tZXRob2R9YCk7Cisg
ICAgICAgIGxldCBoZWFkZXJLZXlzID0gT2JqZWN0LmtleXMocmVxdWVzdC5oZWFkZXJzKTsKKyAg
ICAgICAgaWYgKGhlYWRlcktleXMubGVuZ3RoKSB7CisgICAgICAgICAgICBoZWFkZXJLZXlzLnNv
cnQoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFJlcXVlc3QgSGVhZGVyczpg
KTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgaGVhZGVyS2V5cykgeworICAgICAgICAg
ICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJYLSIpICYmICFuYW1lLnN0YXJ0c1dpdGgoIkNv
bnRlbnQtIikpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IGxldCB2YWx1ZSA9IHJlcXVlc3QuaGVhZGVyc1tuYW1lXTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgbGV0IGdldEtleXMgPSBPYmplY3Qua2V5cyhyZXF1ZXN0LmdldCk7
CisgICAgICAgIGlmIChnZXRLZXlzLmxlbmd0aCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIiAgR2V0OiIpOworICAgICAgICAgICAgZ2V0S2V5cy5zb3J0KCk7CisgICAgICAgICAg
ICBmb3IgKGxldCBuYW1lIG9mIGdldEtleXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgdmFsdWUg
PSByZXF1ZXN0LmdldFtuYW1lXTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhg
ICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgbGV0IHBvc3RLZXlzID0gT2JqZWN0LmtleXMocmVxdWVzdC5wb3N0KTsKKyAgICAgICAgaWYg
KHBvc3RLZXlzLmxlbmd0aCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiAgUG9z
dDoiKTsKKyAgICAgICAgICAgIHBvc3RLZXlzLnNvcnQoKTsKKyAgICAgICAgICAgIGZvciAobGV0
IG5hbWUgb2YgcG9zdEtleXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXF1ZXN0
LnBvc3RbbmFtZV07CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgICAke25h
bWV9OiAke3ZhbHVlfWApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
ZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9uLCBzZXR1
cCwgdGVhcmRvd24sIG92ZXJyaWRlc30pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLCB0ZWFyZG93biwKKyAgICAgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRy
aWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2Vw
dGVkRXZlbnQsIGZldGNoUmVzcG9uc2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2Vy
LkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVB
Z2VudC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAgICAgICAgICAgICAgICBdKTsKKworICAgICAg
ICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2Uo
eworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50
LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAuLi5vdmVycmlkZXMsCisgICAg
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBS
dW50aW1lQWdlbnQuYXdhaXRQcm9taXNlKGZldGNoUmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdCBkZXRhaWxz
OiIpOworICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3QocmVzcG9uc2UucmVzdWx0KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZCIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhw
cmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAg
ICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIlBPU1QiIH0sCisgICAgfSk7CisKKyAgICBhZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9k
RGVsZXRlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRl
cmNlcHRpb24gd2l0aCBERUxFVEUiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdy
ZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgbWV0
aG9kOiAiREVMRVRFIiB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZE5vblN0YW5kYXJkIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBO
T05TVEFOREFSRCIsCisgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9p
bnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeyBtZXRob2Q6ICJOT05T
VEFOREFSRCIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
Ik5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2RFbXB0eSIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGggZW1wdHkgc3RyaW5n
IiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1l
Y2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIiIgfSwKKyAgICB9KTsK
KworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5VUkwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGlu
dGVyY2VwdGlvbiB3aXRoIGRpZmZlcmVudCBVUkwiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0
Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlk
ZXM6IHsgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bmV3VVJMPXZhbHVlIiB9LAorICAgIH0pOworCisgICAg
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVS
TEZyYWdtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBp
bnRlcmNlcHRpb24gd2l0aCBVUkwgd2l0aCBmcmFnbWVudCIsCisgICAgICAgIGV4cHJlc3Npb246
ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92
ZXJyaWRlczogeyB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCNmcmFnbWVudCIgfSwKKyAgICB9KTsKKworICAg
IGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5V
UkxFbXB0eSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50
ZXJjZXB0aW9uIHdpdGggZW1wdHkgVVJMIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0
YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7
IHVybDogIiIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
Ik5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5IZWFkZXJzIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJUZXN0cyByZXF1ZXN0IGhlYWRlcnMgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhwcmVzc2lv
bjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAg
b3ZlcnJpZGVzOiB7IGhlYWRlcnM6IHsgIlgtVmFsdWUiOiAib3ZlcnJpZGRlbiIgfSB9LAorICAg
IH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0LlBvc3REYXRhIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0
IHBvc3QgZGF0YSBpbnRlcmNlcHRpb24iLAorICAgICAgICBleHByZXNzaW9uOiAicG9zdERhdGEo
J3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogewor
ICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCisgICAgICAgICAgICBwb3N0RGF0YTogYnRvYSgi
dmFsdWU9b3ZlcnJpZGRlbiIpLAorICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gYWx0ZXJpbmcgcmVx
dWVzdCBwcm9wZXJ0aWVzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3Vi
cmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGU1ZjRlMDdlZmI2MjZhM2ZhM2ZjZTk1NmQzYzUxMWY5ODAyM2FhZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxF
UlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURFTiBvdmVycmlkZS5q
cyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVz
b3VyY2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5T
dWJyZXNvdXJjZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3ItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZGJmZDQ3M2ZhOTg0OWVlZDAwNWI2NDFkOGQzZDIxMTY4ODBmZWIzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1
IEBACitBTEVSVDogRXJyb3IgbG9hZGluZyBzdHlsZXNoZWV0CitDT05TT0xFIE1FU1NBR0U6IEFj
Y2VzcyBkZW5pZWQKK0FMRVJUOiBFcnJvciBsb2FkaW5nIHN0eWxlc2hlZXQKK0FMRVJUOiBFcnJv
ciBsb2FkaW5nIHN0eWxlc2hlZXQKK0FMRVJUOiBFcnJvciBsb2FkaW5nIHN0eWxlc2hlZXQKK1Rl
c3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBlcnJvciBmb3IgdGhlIHN1YnJlc291cmNlIGxv
YWQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RX
aXRoRXJyb3IKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3Qu
U3VicmVzb3VyY2Ugd2l0aCBnZW5lcmFsIGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxV
UkUgVEVYVDogUmVxdWVzdCBpbnRlcmNlcHRlZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggYWNjZXNzIGVycm9yCitUcmln
Z2VyaW5nIGxvYWQuLi4KK0ZBSUxVUkUgVEVYVDogQWNjZXNzIGRlbmllZAorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggY2Fu
Y2VsZWQgZXJyb3IKK1RyaWdnZXJpbmcgbG9hZC4uLgorRkFJTFVSRSBURVhUOiBSZXF1ZXN0IGNh
bmNlbGVkCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3Qu
U3VicmVzb3VyY2Ugd2l0aCB0aW1lb3V0IGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxV
UkUgVEVYVDogUmVxdWVzdCB0aW1lZCBvdXQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13
aXRoLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45YzQ3NWU1Y2VlZmQxMjYwYjBiZWUwMjUwYTk1NzllZmUyNDEzOGNmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorCitmdW5jdGlvbiBsb2FkU3VicmVzb3VyY2UoKQoreworICAgIGxldCBsaW5rID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpOworICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQi
OworICAgIGxpbmsuaHJlZiA9ICJyZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiOworICAgIGxpbmsu
b25lcnJvciA9ICgpID0+IGFsZXJ0KCdFcnJvciBsb2FkaW5nIHN0eWxlc2hlZXQnKTsKKyAgICBk
b2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIpOworICAgIE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNl
cHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIsCisgICAgICAgIHN0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICB9
KTsKKworICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgZXhwcmVz
c2lvbiwgc2V0dXAsIHRlYXJkb3duLCBlcnJvclR5cGV9KSB7CisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24s
CisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIFdJLlJlc291cmNl
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGYWls
LCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coJ0ZB
SUxVUkUgVEVYVDogJyArIGV2ZW50LnRhcmdldC5mYWlsdXJlUmVhc29uVGV4dCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJp
bmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVkRXZl
bnQsIGZldGNoUmVzcG9uc2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAg
ICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50
LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5l
dmFsdWF0ZSgnbG9hZFN1YnJlc291cmNlKCknKSwKKyAgICAgICAgICAgICAgICBdKTsKKworICAg
ICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9y
Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdEludGVyY2Vw
dGVkRXZlbnQuZGF0YS5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIGVycm9yVHlwZSwK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LlN1YnJlc291cmNlIHdpdGggZ2VuZXJhbCBlcnJvciIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGdlbmVyYWwgZXJy
b3IiLAorICAgICAgICBlcnJvclR5cGU6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLlJl
c291cmNlRXJyb3JUeXBlLkdlbmVyYWwsCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBh
Y2Nlc3MgZXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVx
dWVzdCBpbnRlcmNlcHRpb24gd2l0aCBhY2Nlc3MgZXJyb3IiLAorICAgICAgICBlcnJvclR5cGU6
IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLlJlc291cmNlRXJyb3JUeXBlLkFjY2Vzc0Nv
bnRyb2wsCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBjYW5jZWxlZCBlcnJvciIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlv
biB3aXRoIGNhbmNlbGVkIGVycm9yIiwKKyAgICAgICAgZXJyb3JUeXBlOiBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5DYW5jZWxsYXRpb24sCisgICAgfSk7
CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJl
cXVlc3QuU3VicmVzb3VyY2Ugd2l0aCB0aW1lb3V0IGVycm9yIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggdGltZW91dCBl
cnJvciIsCisgICAgICAgIGVycm9yVHlwZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsu
UmVzb3VyY2VFcnJvclR5cGUuVGltZW91dCwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggZXJyb3IgZm9yIHRo
ZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
c3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNzBhMTY2Yzc2OTEzYThlZGUz
MzgyZWI5YzJmOGVmOTkyZWE3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxFUlQ6IERFRkFVTFQg
b3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURERU4gb3ZlcnJpZGUuanMgVEVYVAorVGVz
dCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlIGZvciB0aGUgc3VicmVzb3VyY2Ug
bG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdC5TdWJyZXNvdXJjZSB3aXRoIHJlc3BvbnNlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZThmNjUzNGQ0YjI4NGVkMGVjODVjNzQ2MjRmYTdkMzBmZjNhMTBhZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAg
KzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IElu
c3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCByZXNwb25zZSIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3
aXRoIHJlc3BvbnNlIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGF3YWl0
IE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1
cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292
ZXJyaWRlLmpzIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVt
Lk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgV0kubmV0d29ya01hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29y
a01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7Cisg
ICAgICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Uu
aW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAg
ICAgICBtaW1lVHlwZTogInRleHQvamF2YXNjcmlwdCIsCisgICAgICAgICAgICAgICAgICAgIGNv
bnRlbnQ6IGBhbGVydCgiT1ZFUlJJRERFTiBvdmVycmlkZS5qcyBURVhUIik7IFRlc3RQYWdlLmRp
c3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJPdmVycmlkZUNvbnRlbnREaWRMb2FkIik7YCwKKyAgICAg
ICAgICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
IHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAg
ICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uo
e2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAg
ICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJPdmVycmlkZUNvbnRlbnRE
aWRMb2FkIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0Fu
ZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UgZm9yIHRoZSBz
dWJyZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNTg3OWMxNzllMmQzMGY5Zjhj
ZmQyNjZkMzk4NTY4OGFkNjg3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0
IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3QiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiIsCisgICAgICAgIGFzeW5j
IHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9u
Lmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIsCisgICAgICAgICAgICAgICAg
c3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0
LAorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5zaW5nbGVG
aXJlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0
ZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQs
IHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICBOZXR3b3JrQWdlbnQuaW50
ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgdXJsOiAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQt
cmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzIiwKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dElkLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBh
d2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxp
ZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVz
dC5hd2FpdEV2ZW50KCJPdmVycmlkZUNvbnRlbnREaWRMb2FkIik7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJj
ZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2Ut
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyZGFlNzFlMGFhMjcwYWJiNzU2ZDI0MjQ0NjNiNzg1
MDQ4YTdhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNzIgQEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3Qg
cmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNwb25zZS4KKworCis9PSBSdW5uaW5nIHRlc3Qg
c3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0
ZXN0IGNhc2U6IHNldFVwCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnNlLlRleHQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0
YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL292ZXJyaWRlLnR4dAorICBNSU1FIFR5cGU6IHRleHQvcGxhaW4KKyAgU3RhdHVzOiA5
ODcgT3ZlcnJpZGUgU3RhdHVzIFRleHQKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50
LXR5cGU6IHRleHQvcGxhaW4KKyAgICB4LW92ZXJyaWRlLWhlYWRlci0xOiBPdmVycmlkZS1IZWFk
ZXItVmFsdWUtMQorICAgIHgtb3ZlcnJpZGUtaGVhZGVyLTI6IE92ZXJyaWRlLUhlYWRlci1WYWx1
ZS0yCisgIENvbnRlbnQ6IFBBU1MgLSBPVkVSUklEREVOIFRFWFQKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5KYXZhU2NyaXB0CitU
cmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQKKyAgTUlN
RSBUeXBlOiBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0CisgIFN0YXR1czogMjAwIFN1cGVyIE9LCisg
IFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0CisgICAgeC1jdXN0b20taGVhZGVyOiBIZWFkZXIgdmFsdWUKKyAgQ29udGVudDogLyogUEFT
UyAqLyAoZnVuY3Rpb24oKSB7IC8qIE9WRVJSSURERU4gKi8gfSkoKTsKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5JbWFnZQorVHJp
Z2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUg
VHlwZTogaW1hZ2UvcG5nCisgIFN0YXR1czogMjAwIE9LCisgIFJlc3BvbnNlIEhlYWRlcnM6Cisg
ICAgY29udGVudC10eXBlOiBpbWFnZS9wbmcKKyAgQ29udGVudDogPGRhdGE+CisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVVJMLlF1
ZXJ5U3RyaW5nCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlk
ZS50eHQ/cz0yCisgIE1JTUUgVHlwZTogdGV4dC9wbGFpbgorICBTdGF0dXM6IDIwMCBPSworICBS
ZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbgorICAgIHgtZXhw
ZWN0ZWQ6IFBBU1MKKyAgQ29udGVudDogUEFTUworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLlVSTC5GcmFnbWVudAorVHJpZ2dlcmlu
ZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUgVHlwZTog
dGV4dC9wbGFpbgorICBTdGF0dXM6IDIwMCBPSworICBSZXNwb25zZSBIZWFkZXJzOgorICAgIGNv
bnRlbnQtdHlwZTogdGV4dC9wbGFpbgorICAgIHgtZXhwZWN0ZWQ6IFBBU1MKKyAgQ29udGVudDog
UEFTUworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlLjQwNAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBV
Ukw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3Zl
cnJpZGUudHh0CisgIE1JTUUgVHlwZTogdGV4dC9wbGFpbgorICBTdGF0dXM6IDQwNCBOb3QgRm91
bmQKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IHRleHQvcGxhaW4KKyAg
ICB4LWV4cGVjdGVkOiBQQVNTCisgIENvbnRlbnQ6IFBBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRo
LXJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTQ1YTE1
ZDY2ZmYwOGIxNzMxZTJkMjljOGZjMDEwNjdiN2Q3MTVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13
aXRoLXJlc3BvbnNlLmh0bWwKQEAgLTAsMCArMSwxNzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworYXN5bmMgZnVu
Y3Rpb24gdHJpZ2dlck92ZXJyaWRlTG9hZCh1cmxTdWZmaXgpIHsKKyAgICBsZXQgdXJsID0gImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUu
dHh0IjsKKyAgICBpZiAodXJsU3VmZml4KQorICAgICAgICB1cmwgKz0gdXJsU3VmZml4OworCisg
ICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTsKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHVybDogcmVzcG9uc2UudXJsLAorICAgICAgICAgICAg
dGV4dDogYXdhaXQgcmVzcG9uc2UudGV4dCgpLAorICAgICAgICAgICAgc3RhdHVzOiByZXNwb25z
ZS5zdGF0dXMsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LAor
ICAgICAgICAgICAgaGVhZGVyczogQXJyYXkuZnJvbShyZXNwb25zZS5oZWFkZXJzKSwKKyAgICAg
ICAgfTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHJldHVybiB7IGVycm9yOiBlLm1lc3Nh
Z2UgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IElu
c3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlIik7CisgICAgCisgICAgTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZv
a2UoeworICAgICAgICB1cmw6ICIuKm92ZXJyaWRlXC50eHQuKiIsCisgICAgICAgIGlzUmVnZXg6
IHRydWUsCisgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3
b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICB9KTsKKworICAgIGZ1bmN0aW9uIGxvZ1Jlc3BvbnNlKHJl
c3BvbnNlKSB7CisgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMgPSBuZXcgTWFwKHJlc3BvbnNlLmhl
YWRlcnMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBVUkw6ICR7cmVzcG9uc2UudXJs
fWApOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBNSU1FIFR5cGU6ICR7cmVzcG9uc2Uu
aGVhZGVycy5nZXQoImNvbnRlbnQtdHlwZSIpfWApOworICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhgICBTdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFJlc3BvbnNlIEhlYWRlcnM6YCk7CisgICAg
ICAgIGxldCBrZXlzID0gQXJyYXkuZnJvbShyZXNwb25zZS5oZWFkZXJzLmtleXMoKSk7CisgICAg
ICAgIGtleXMuc29ydCgpOworICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGtleXMpIHsKKyAgICAg
ICAgICAgIGxldCB2YWx1ZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KG5hbWUpOworICAgICAgICAg
ICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIngtIikgJiYgIW5hbWUuc3RhcnRzV2l0aCgiY29udGVu
dC0iKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKGAgICAgJHtuYW1lfTogJHt2YWx1ZX1gKTsKKyAgICAgICAgfQorICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZyhgICBDb250ZW50OiAke3Jlc3BvbnNlLnRleHR9YCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRv
d24sIGV4cHJlc3Npb24sIHJlc3BvbnNlRGF0YX0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLCB0ZWFyZG93biwKKyAg
ICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbcmVxdWVzdElu
dGVyY2VwdGVkRXZlbnQsIGZldGNoUmVzcG9uc2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAg
ICAgICAgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtN
YW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgICAgIFJ1
bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAgICAgICAgICAgICAgICBdKTsKKwor
ICAgICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdElu
dGVyY2VwdGVkRXZlbnQuZGF0YS5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIC4uLnJl
c3BvbnNlRGF0YSwKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGxldCBy
ZXNwb25zZSA9IGF3YWl0IFJ1bnRpbWVBZ2VudC5hd2FpdFByb21pc2UoZmV0Y2hSZXNwb25zZS5y
ZXN1bHQub2JqZWN0SWQsIHRydWUpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJSZXNwb25zZSBkZXRhaWxzOiIpOworICAgICAgICAgICAgICAgIGxvZ1Jlc3BvbnNlKHJlc3Bv
bnNlLnJlc3VsdC52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZS5UZXh0IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJJbnRlcmNlcHQgcmVx
dWVzdCB3aXRoIHRleHQgY29udGVudC4iLAorICAgICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92
ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7CisgICAgICAgICAgICBjb250
ZW50OiBgUEFTUyAtIE9WRVJSSURERU4gVEVYVGAsCisgICAgICAgICAgICBiYXNlNjRFbmNvZGVk
OiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAg
ICBzdGF0dXM6IDk4NywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPdmVycmlkZSBTdGF0dXMg
VGV4dCIsCisgICAgICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAgICAgIlgtT3ZlcnJp
ZGUtSGVhZGVyLTEiOiAiT3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTEiLAorICAgICAgICAgICAgICAg
ICJYLU92ZXJyaWRlLUhlYWRlci0yIjogIk92ZXJyaWRlLUhlYWRlci1WYWx1ZS0yIiwKKyAgICAg
ICAgICAgIH0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuSmF2YVNjcmlw
dCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiSW50ZXJjZXB0IHJlcXVlc3Qgd2l0aCBqYXZhc2Ny
aXB0IGNvbnRlbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQo
KWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgY29udGVudDogYC8qIFBB
U1MgKi8gKGZ1bmN0aW9uKCkgeyAvKiBPVkVSUklEREVOICovIH0pKCk7YCwKKyAgICAgICAgICAg
IGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWltZVR5cGU6ICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IiwKKyAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgc3Rh
dHVzVGV4dDogIlN1cGVyIE9LIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAgICAg
ICAgICAiWC1DdXN0b20tSGVhZGVyIjogIkhlYWRlciB2YWx1ZSIsCisgICAgICAgICAgICB9LAor
ICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkltYWdlIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJJbnRlcmNlcHQgcmVxdWVzdCB3aXRoIGltYWdlIGNvbnRlbnQuIiwKKyAgICAg
ICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQoKWAsCisgICAgICAgIHJlc3BvbnNl
RGF0YTogeworICAgICAgICAgICAgY29udGVudDogYnRvYSgiPGRhdGE+IiksCisgICAgICAgICAg
ICBiYXNlNjRFbmNvZGVkOiB0cnVlLAorICAgICAgICAgICAgbWltZVR5cGU6ICJpbWFnZS9wbmci
LAorICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0si
LAorICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBh
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRo
UmVzcG9uc2UuVVJMLlF1ZXJ5U3RyaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IG92
ZXJyaWRlcyB3aXRoIGRpZmZlcmVudCBxdWVyeSBzdHJpbmdzLiIsCisgICAgICAgIGV4cHJlc3Np
b246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKCI/cz0yIilgLAorICAgICAgICByZXNwb25zZURhdGE6
IHsKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgY29udGVu
dDogIlBBU1MiLAorICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAg
ICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAg
ICAgIGhlYWRlcnM6IHsiWC1FeHBlY3RlZCI6ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7
CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJl
cXVlc3RXaXRoUmVzcG9uc2UuVVJMLkZyYWdtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJU
ZXN0IG92ZXJyaWRlIGZvciBhIGxvYWQgd2l0aCBhIGZyYWdtZW50LiIsCisgICAgICAgIGV4cHJl
c3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKCIjZnJhZyIpYCwKKyAgICAgICAgcmVzcG9uc2VE
YXRhOiB7CisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBiYXNlNjRF
bmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisgICAg
ICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAg
ICAgICAgICBoZWFkZXJzOiB7IlgtRXhwZWN0ZWQiOiAiUEFTUyJ9LAorICAgICAgICB9LAorICAg
IH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlLjQwNCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBm
b3IgYSA0MDQgb3ZlcnJpZGUuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlk
ZUxvYWQoKWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgY29udGVudDog
IlBBU1MiLAorICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICBt
aW1lVHlwZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgc3RhdHVzOiA0MDQsCisgICAgICAg
ICAgICBzdGF0dXNUZXh0OiAiTm90IEZvdW5kIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsiWC1F
eHBlY3RlZCI6ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5U
ZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNl
LjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ5YWI1MGE1N2E0NGRhOGJjNmYxMThlYjVmZGViYmU3MTJhZjRlMWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKQEAgLTAsMCArMSwxOCBAQAoreworICAgICJ1cmki
OiAiPD9waHAgZWNobyAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSA/PiIsCisgICAgIm1ldGhvZCI6
ICI8P3BocCBlY2hvICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddOyA/PiIsCisgICAgImhlYWRl
cnMiOiB7Cis8P3BocCBmb3JlYWNoIChnZXRhbGxoZWFkZXJzKCkgYXMgJG5hbWUgPT4gJHZhbHVl
KSB7ID8+CisgICAgICAgICI8P3BocCBlY2hvICRuYW1lOyA/PiI6ICI8P3BocCBlY2hvICR2YWx1
ZTsgPz4iLAorPD9waHAgfSA/PiB9LAorICAgICJnZXQiOiB7Cis8P3BocCBmb3JlYWNoICgkX0dF
VCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAgICAgIjw/cGhwIGVjaG8gJG5hbWU7ID8+
IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8P3BocCB9ID8+CisgICAgfSwKKyAgICAicG9z
dCI6IHsKKzw/cGhwIGZvcmVhY2ggKCRfUE9TVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAg
ICAgICAgIjw/cGhwIGVjaG8gJG5hbWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8
P3BocCB9ID8+CisgICAgfSwKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1w
YWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVm
MjIxNjdlZGIwYmJlM2ZiMDcyYzQ3MWVjODIzNzQ5NTNhNWQyYTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRl
cmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+PC9oZWFkPgorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPgorICAgIDwvc2NyaXB0PgorICAgIDxib2R5
PgorICAgICAgICA8cD5PdmVycmlkZGVuIHBhZ2UgY29udGVudDwvcD4KKyAgICAgICAgPHNjcmlw
dD5hbGVydCgiUkVQTEFDRUQgSFRNTCBDT05URU5UIik7IFRlc3RQYWdlLmNvbXBsZXRlVGVzdCgp
Ozwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1zY3JpcHQuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc3OGVjNGUyNjExNTdkMzMwOTE5YzEzMjg5OTk1NTc3OTg5MzdlYWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzCkBAIC0wLDAgKzEs
MiBAQAorYWxlcnQoIk9WRVJSSURFTiBvdmVycmlkZS5qcyBURVhUIik7CitUZXN0UGFnZS5kaXNw
YXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRl
c3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9j
b2wtdGVzdC5qcwppbmRleCBhMDI2NDlkNTZiZGIzZDI4NWMxZjBkN2Y4MDBjZmU0MTA4OTIyNjQx
Li44MzFhNjFmNjc4NWU0NDg4YjEyZDdkZmRlZjFmZTY2ZDM3NTUxMjIyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5q
cworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9j
b2wtdGVzdC5qcwpAQCAtODcsMTIgKzg3LDE0IEBAIFRlc3RQYWdlLnJ1blRlc3QgPSB3aW5kb3cu
cnVuVGVzdCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodHlwZW9mIHRlc3RGdW5jdGlvbiAhPT0gImZ1
bmN0aW9uIikgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIHNlbmQgdGVzdCgpIGJlY2F1c2Ug
aXQgaXMgbm90IGEgZnVuY3Rpb24uIik7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbGV0IHVybCA9IHRlc3RSdW5uZXIuaW5z
cGVjdG9yVGVzdFN0dWJVUkw7CiAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgYWxlcnQoIkZhaWxl
ZCB0byBvYnRhaW4gaW5zcGVjdG9yIHRlc3Qgc3R1YiBVUkwuIik7CiAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
cnVuSW5pdGlhbGl6YXRpb25NZXRob2RzSW5Gcm9udGVuZChpbml0aWFsaXplcnMpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlk
ZS1jb250aW51ZS1yZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbAppbmRleCA0NDgw
NjQyMDA0NDc2OTdmYjA3ZjQxNmU5Nzg2Mzk4ZTAwM2QyNDYwLi5kNjZlMTQwZWI3MTc4NjQ3YzM4
ODYyOWIwZDEzZTFhYTAxYTAzMGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRl
LWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKQEAgLTQ2LDcgKzQ2LDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgICAgICAvLyBMZXQgdGhlIGxvYWQgY29udGludWUuCiAgICAgICAgICAgICBhd2Fp
dCBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRF
dmVudCh7ZXZlbnQ6ICJOZXR3b3JrLnJlc3BvbnNlUmVjZWl2ZWQifSksCi0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21tYW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVy
Y2VwdENvbnRpbnVlIiwgcGFyYW1zOiB7cmVxdWVzdElkOiBtZXNzYWdlT2JqZWN0LnBhcmFtcy5y
ZXF1ZXN0SWR9fSksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuYXdhaXRDb21t
YW5kKHttZXRob2Q6ICJOZXR3b3JrLmludGVyY2VwdENvbnRpbnVlIiwgcGFyYW1zOiB7cmVxdWVz
dElkOiBtZXNzYWdlT2JqZWN0LnBhcmFtcy5yZXF1ZXN0SWQsIHN0YWdlOiAicmVzcG9uc2UifX0p
LAogICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICBQcm90b2NvbFRlc3QucGFzcygiUmVzcG9u
c2UgcmVjZWl2ZWQuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24gYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2
NGUyYjBkOTk2N2NlYjFlZDdlMzJjZDE5MjkzNWRmMTc2NTgxMjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRl
ZC5qc29uCkBAIC0wLDAgKzEgQEAKK2ludGVyY2VwdGVkIHJlcXVlc3QKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggMzkzNWZlYjc0NGQ0N2NmNjFmZDNjMWYzMzg5MmJiZTdmMmFlOWI5Ni4uNmRk
NGZjMDJiNTU2NzM0YWRlNTcyZDZmY2ZhZTU3MjNiNTY5ZjAyYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTc0LDYgKzU3NCwxOCBAQCBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLXNjcmlw
dC10YWcuaHRtbCBbIEZhaWx1cmUgXQogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZS1yZXNwb25zZS1pbnNwZWN0b3Itb3ZlcnJpZGUuaHRtbCBbIEZhaWx1cmUgXQogaW5zcGVj
dG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRt
bCBbIFNraXAgXQogCisjIFJlcXVlc3QgaW50ZXJjZXB0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4g
V2ViS2l0MQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1y
ZXF1ZXN0Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtY29udGludWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1mcmFnbWVudC5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRt
bCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwgWyBTa2lw
IF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVz
b3VyY2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1y
ZXNwb25zZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UuaHRtbCBbIFNraXAgXQorCiB3ZWJraXQub3JnL2Iv
MTY0OTMzIGh0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCBbIEZh
aWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTY1NTQxIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLW92ZXJsYXAtZXh0ZW50LXJ0bC5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401878</attachid>
            <date>2020-06-14 18:59:39 -0700</date>
            <delta_ts>2020-06-15 14:02:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200614185938.patch</filename>
            <type>text/plain</type>
            <size>113186</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTk1MjMwNmRlNGQ3MDNlYWNkY2VkYTliYzFlNjUxYzg0OGFmNGE4Li4xMjhjMTk4ZmE5YTczMzk1
MDYyZTNiNTg3NDkwNTJjMTVhYTZmNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0xMSAgUGF1bG8gTWF0
b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBpbmNsdWRlIHRv
IEpTT05PYmplY3QuY3BwIC0gbm9uLXVuaWZpZWQgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGM5MDI3
ZjM1ZDA3ZjcyOTQwMjVmY2Y3ZGY5NjM5MzQzYTllNmM5Li40YWFlMGRiN2JhOTA4Mzg0N2ExYTc2
OWNkMWJjY2Y5ZTg2N2U1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjAtMDYt
MDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAg
cHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90
aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVs
ZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3Qn
IGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGlu
dWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1mcmFnbWVudC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2Uu
aHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hv
dWxkSW50ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6Omlu
dGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNv
bnRpbnVlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0Q29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVz
dDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdDo6Y29udGludWVXaXRoT3JpZ2lu
YWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6UGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3Q6OmNvbnRpbnVlV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0w
Ni0xMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcHJvdmUgdXJs
LXNldHRlcnMuaHRtbCBXUFQgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMDFlZmUz
ZDJmMGU5ODg1NjU3NDE5ZDIxNzBiYTBkYzRlNWNjNzU0NC4uZjUyZmQ5ZThiMmUwNzE1YmQ2Y2Rj
MDQ0NzU5MTM0NDg2YzIyZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMjAtMDYtMDMgIFBhdmVsIEZlbGRtYW4gPHBhdmVsLmZlbGRtYW5AZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3
b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRX
aXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVkLCBt
b2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAg
ICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5hZGRMb2NhbFJlc291cmNlT3ZlcnJpZGUpOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlbW92ZUxvY2FsUmVzb3VyY2VPdmVycmlkZSk6
CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVk
KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXNwb25zZUludGVyY2Vw
dGVkKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlUmVzb3Vy
Y2VPdmVycmlkZURpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5OZXR3b3JrT2JzZXJ2ZXIucHJv
dG90eXBlLnJlcXVlc3RJbnRlcmNlcHRlZCk6CisKIDIwMjAtMDYtMTAgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRleHQgaW5wdXRz
IHNob3VsZCBub3Qgc3BlbGxjaGVjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlN2Y4NDlkNmY4ODczYjA3NjFiZDg1
YjRjMDM2NTZhOTkwYWE5NWNjLi5iY2RiNDZlM2FlOTIyZTMxYjQzMzBlZmJmY2EyNmQ5Y2YxZjk3
YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTAzICBQYXZlbCBGZWxkbWFu
ICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50
cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVz
dCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4g
SXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0Cisg
ICAgICAgIGNhbiBiZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0
YWdlIGVudW0gY2FuIG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2
YWx1ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKToK
KwogMjAyMC0wNi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIE1lZGlhVXNhZ2VNYW5hZ2VyQ29jb2Egc2hvdWxkIHVzZSBhIGRpZmZl
cmVudCBVU1ZpZGVvVXNhZ2UgaW5pdGlhbGl6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KaW5kZXggZjI0MjVkZDZhZmMw
ZWZiZjFkMTE1MjIwZmQ0MjQ2YWZlMmZiOTJlMS4uNjVhYjIwOTJiMGZmZDBlYWQzZGExZGRjY2Qz
OThkNGY0MTc5ZjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9OZXR3b3JrLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KQEAgLTE1NSw3ICsxNTUsMTMgQEAKICAgICAgICAg
ICAgICJpZCI6ICJOZXR3b3JrU3RhZ2UiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29y
ayByZXF1ZXN0LiIsCi0gICAgICAgICAgICAiZW51bSI6IFsicmVzcG9uc2UiXQorICAgICAgICAg
ICAgImVudW0iOiBbInJlcXVlc3QiLCAicmVzcG9uc2UiXQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAiaWQiOiAiUmVzb3VyY2VFcnJvclR5cGUiLAorICAgICAgICAgICAgInR5
cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3Rh
Z2VzIG9mIGEgbmV0d29yayByZXF1ZXN0LiIsCisgICAgICAgICAgICAiZW51bSI6IFsiR2VuZXJh
bCIsICJBY2Nlc3NDb250cm9sIiwgIkNhbmNlbGxhdGlvbiIsICJUaW1lb3V0Il0KICAgICAgICAg
fQogICAgIF0sCiAgICAgImNvbW1hbmRzIjogWwpAQCAtMjQ0LDEwICsyNTAsMTAgQEAKICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJBZGQgYW4gaW50ZXJjZXB0aW9uLiIsCiAgICAgICAgICAg
ICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlVSTCBwYXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcgaWYg
bm90IHNwZWNpZmllZCBvciBlbXB0eSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGlu
dGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBm
YWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1l
dGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBz
dGFnZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVh
dHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNTYsMTcgKzI2MiwyOSBAQAogICAgICAg
ICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdl
IiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5n
IG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Jl
Z2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9u
LiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29y
a1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50
IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVn
dWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7
CiAgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRDb250aW51ZSIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ29udGludWUgYW4gaW50ZXJjZXB0aW9uIHdpdGggbm8gbW9kaWZpY2F0
aW9ucy4iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIHJlcXVlc3Qgb3Ig
cmVzcG9uc2Ugd2l0aG91dCBtb2RpZmljYXRpb25zLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlw
ZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0
aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3Ig
cmVzcG9uc2UgdG8gY29udGludWUuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBm
b3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51
ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdv
cmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0byBjb250aW51ZS4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgaW50
ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRlZCBvbmUuIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRy
ZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRl
cmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFs
IjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0
cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdo
IG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEsIGJhc2U2NC1lbmNvZGVkLiIgfQog
ICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yODIsNiArMzAwLDI3IEBA
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVz
IHRleHQuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBh
c3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0KICAgICAgICAgICAg
IF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0
UmVxdWVzdFdpdGhSZXNwb25zZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvdmlk
ZSByZXNwb25zZSBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVxdWVzdC4gUmVxdWVzdCBjb21wbGV0ZWx5
IGJ5cGFzc2VzIHRoZSBuZXR3b3JrIGluIHRoaXMgY2FzZSBhbmQgaXMgaW1tZWRpYXRlbHkgZnVs
ZmlsbGVkIHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVx
dWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBO
ZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1
ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTUlN
RSBUeXBlIGZvciB0aGUgZGF0YS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0
dXMiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3Rh
dHVzIGNvZGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0
LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFk
ZXJzIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0UmVxdWVzdFdpdGhFcnJvciIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmFpbCBy
ZXF1ZXN0IHdpdGggZ2l2ZW4gZXJyb3IgdHlwZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1
ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5l
dHdvcmsgcmVxdWVzdCB0byBmYWlsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVy
cm9yVHlwZSIsICIkcmVmIjogIlJlc291cmNlRXJyb3JUeXBlIiwgImRlc2NyaXB0aW9uIjogIkRl
bGl2ZXIgZXJyb3IgcmVhc29uIGZvciB0aGUgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAgICAgICAg
ICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpAQCAtMzU3LDkgKzM5Niwx
NyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNo
ZWRSZXNvdXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAg
ICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
cmVxdWVzdEludGVyY2VwdGVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3
aGVuIEhUVFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3Qg
cmVzcG9uZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+LCA8Y29k
ZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9jb2RlPmAgb3IgPGNvZGU+TmV0d29yay5p
bnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byByZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAor
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxp
ZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVmIjogIlJlcXVlc3QiLCAiZGVzY3JpcHRp
b24iOiAiT3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlz
IGlzIGNvbnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewog
ICAgICAgICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRlcmNlcHRlZCIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2Vw
dGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJj
ZXB0Q29udGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8
L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29u
dGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2Rl
PmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVz
IjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRz
IHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4i
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IGVkNzYzYzExZWI5NTY0NmY2M2VjZjhkZGE3MDhhYjg4NDE0ZjMy
OTAuLjZjYjU5ZWNlZWE0ZWIyZTgxNjVlOTU5NjQ0ODM3NjY1NjExZmE5MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC04MTEsMTAgKzgxMSwxNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhYwogICAgIH0KIH0K
IAotYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
dGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKLSAgICAgICAg
cmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CisgICAg
ICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50
ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmIChhdXRvKiBuZXR3
b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKKyAg
ICAgICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNSw2ICs4MzIsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAo
YXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0Fn
ZW50KCkpCisgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdU
Rk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3Jr
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBjN2I2NmJhMTE1NWQ5MWIzYzVlMGUzMTJlMTRiZDJmZTczMjg2ZDI1Li5kZjkzOTA1YjQ1
YmFlNGM3NGE3MWQxZWFlODljMTI1ZTAxODNhMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKQEAgLTIzNCw4ICsyMzUsMTAg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4pOwpAQCAtNDQyLDggKzQ0NSwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3Vy
Y2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wg
d2lsbEludGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
Jiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTEyNTcs
MTEgKzEyNjIsMTkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJgogICAgIHdpbGxEZXN0cm95Q2Fj
aGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxJbnRlcmNl
cHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgICAgIHJl
dHVybiB3aWxsSW50ZXJjZXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0
dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1
ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyNzMsNiArMTI4NiwxMyBAQCBpbmxp
bmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVy
JiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KCpsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOwor
ICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckZyYW1lKGxvYWRlci5mcmFtZSgpKSkKKyAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXggOTU0YWFmMTIxYTlmYTUwN2Q4
M2JjMTBhZTM3ZGUxZjEyOGY3ZGNmYy4uZTM4ZWYzOThlN2U5YWZjMWUwMWE1NGI5Y2U2OGZjMjM1
OThlOTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMwLDExICszMCwyMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChmcmFtZSwgcmVxdWVzdCk7Cit9CisK
IGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmIGhhbmRsZXIpCit7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNl
cHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50
aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGI2N2U4OWI4
MGI0ZTdhODU4NmNhYzgxYWRlNWQ1OGExYmNiMGQ0MzEuLmEzMmY4NzdlYWEwNGYyN2QxMjEyNzBj
ZmY1YWNjM2IwMzJjMWM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDE0ICszNiwyNyBA
QCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKK2lubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoKmZyYW1lLCByZXF1ZXN0KTsKK30KKwogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSog
ZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CkBAIC01Myw2ICs2NiwxMiBAQCBpbmxpbmUgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lKgogICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KCpmcmFtZSwgcmVzcG9uc2UpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQor
eworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVy
Y2VwdFJlcXVlc3QobG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAg
IEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDJjZjQ5ODhm
MTMyMjJiZTU0MThiMGEyMzExNmI4ZGM5NmIxZjgzZjcuLjAwOWFiNjQ2MDlkM2YyMWYzMDYzMThk
ZjUxZWUwYTViMDdlYzJhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SFRUUEhlYWRlck1hcC5oIgpAQCAtNDY1LDYgKzQ2Niw3IEBAIHN0YXRpYyBJbnNwZWN0b3JQYWdl
QWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvCiB7CiAgICAgaWYgKHJlc291cmNlKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFn
ZW50OjppbnNwZWN0b3JSZXNvdXJjZVR5cGUoKnJlc291cmNlKTsKKwogICAgIHJldHVybiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CiB9CiAKQEAgLTg0MCwxMiArODQyLDEzIEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBt
X3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAgICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFy
KCk7CiAKKyAgICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIGNvbnRpbnVlUGVuZGlu
Z1Jlc3BvbnNlcygpOwogCiAgICAgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoZmFsc2UpOwog
fQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwp
Citib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwsIE5l
dHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UpCiB7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwogCkBAIC04NTQsNiArODU3LDExIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Zm9yIChhdXRvJiBpbnRlcmNlcHQgOiBtX2ludGVyY2VwdHMpIHsKKyAgICAgICAgaWYgKGludGVy
Y2VwdC5uZXR3b3JrU3RhZ2UgIT0gbmV0d29ya1N0YWdlKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChpbnRlcmNlcHQudXJsLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCiAgICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9IGludGVyY2VwdC5pc1Jl
Z2V4ID8gQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6UmVnZXggOiBD
b250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpFeGFjdFN0cmluZzsKICAg
ICAgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVJlZ3VsYXJF
eHByZXNzaW9uRm9yU2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGludGVyY2VwdC5jYXNlU2Vu
c2l0aXZlLCBzZWFyY2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJlZ2V4Lm1hdGNoKHVybFN0
cmluZykgIT0gLTEpCkBAIC04NjMsNiArODcxLDEzIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpCit7Cisg
ICAgZm9yIChhdXRvJiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3Rz
LnZhbHVlcygpKQorICAgICAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxS
ZXF1ZXN0KCk7CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7
CiAgICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRl
cmNlcHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI4LDE4ICsxMDQzLDE4IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwog
Ci0gICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlv
bkVuYWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAg
Y29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykK
K3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3Rh
Z2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
b3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAg
ICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3
b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93
biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7
CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3Ry
aW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNDgs
MjEgKzEwNjMsMTggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlv
bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICAgICAgaW50ZXJjZXB0
LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25h
bElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsK
LQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRl
cmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1f
aW50ZXJjZXB0cy5hcHBlbmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCi0gICAgICAgIGVycm9y
U3RyaW5nID0gIkludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVh
ZHkgZXhpc3RzIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcmNlcHQgZm9yIGdpdmVu
IHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIGFscmVhZHkgZXhpc3RzIl9zOwog
fQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJp
bmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1v
dmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChu
ZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdl
U3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtT
dGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5l
dHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3Jr
U3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9z
LCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50
ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNzEsMTkgKzEwODMsMjcgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFMKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5p
c1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVy
Y2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRlcmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0
YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5yZW1vdmVBbGwoaW50ZXJjZXB0
KSkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpbnRlcmNlcHQgZm9yIGdpdmVuIHVy
bCBhbmQgZ2l2ZW4gaXNSZWdleCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBp
bnRlcmNlcHQgZm9yIGdpdmVuIHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIl9z
OwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OndpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCkpOworICAgIHJldHVybiBzaG91
bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KQorICAgICAg
ICB8fCBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25z
ZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1faW50ZXJj
ZXB0aW9uRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNob3Vs
ZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpOwogfQogCiBi
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkxLDcgKzExMTEsMjEgQEAgYm9vbCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51
cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSwgTmV0d29y
a1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9l
bmFibGVkKTsKKyAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKKworICAgIFN0cmlu
ZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChsb2FkZXIuaWRlbnRp
ZmllcigpKTsKKyAgICBpZiAobV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY29udGFpbnMocmVx
dWVzdElkKSkgeworICAgICAgICBoYW5kbGVyKGxvYWRlci5yZXF1ZXN0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNldChyZXF1ZXN0
SWQsIG1ha2VVbmlxdWU8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+KCZsb2FkZXIsIFdURk1vdmUo
aGFuZGxlcikpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVk
KHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3Qo
KSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCkBAIC0xMTExLDE1ICsxMTQ1LDYzIEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VJbnRl
cmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25z
ZSwgbnVsbHB0cikpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IG5ldHdvcmtTdGFnZVN0cmluZykKIHsKLSAgICBhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7Ci0gICAgaWYg
KCFwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVs
cGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtT
dGFnZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29y
a1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzd2l0Y2ggKG5ldHdvcmtTdGFnZS52YWx1ZSgpKSB7CisgICAgY2FzZSBOZXR3b3Jr
U3RhZ2U6OlJlcXVlc3Q6CisgICAgICAgIGlmIChhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0
ID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMudGFrZShyZXF1ZXN0SWQpKQorICAgICAgICAg
ICAgcGVuZGluZ0ludGVyY2VwdFJlcXVlc3QtPmNvbnRpbnVlV2l0aE9yaWdpbmFsUmVxdWVzdCgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRp
bmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgTmV0d29ya1N0YWdlOjpSZXNwb25zZToKKyAgICAgICAgaWYgKGF1dG8g
cGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlID0gbV9wZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2VzLnRh
a2UocmVxdWVzdElkKSkKKyAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVz
cG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIk1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVu
IHJlcXVlc3RJZCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KIAotICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZFdpdGhP
cmlnaW5hbFJlc3BvbnNlKCk7Cit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
V2l0aFJlcXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBKU09O
OjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBw
ZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElk
KTsKKyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8mIGxvYWRlciA9ICpwZW5kaW5nUmVxdWVz
dC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBsb2FkZXIu
cmVxdWVzdCgpOworICAgIGlmICh1cmwpCisgICAgICAgIHJlcXVlc3Quc2V0VVJMKFVSTCh7IH0s
ICp1cmwpKTsKKyAgICBpZiAobWV0aG9kKQorICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2Qo
Km1ldGhvZCk7CisgICAgaWYgKGhlYWRlcnMpIHsKKyAgICAgICAgSFRUUEhlYWRlck1hcCBleHBs
aWNpdEhlYWRlcnM7CisgICAgICAgIGZvciAoYXV0byYgW2tleSwgdmFsdWVdIDogKmhlYWRlcnMp
IHsKKyAgICAgICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1
ZS0+YXNTdHJpbmcoaGVhZGVyVmFsdWUpKQorICAgICAgICAgICAgICAgIGV4cGxpY2l0SGVhZGVy
cy5hZGQoa2V5LCBoZWFkZXJWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdC5zZXRI
VFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7CisgICAgfQorICAgIGlm
IChwb3N0RGF0YSkgeworICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICBp
ZiAoIWJhc2U2NERlY29kZSgqcG9zdERhdGEsIGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gcG9zdERhdGEiX3M7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0
YTo6Y3JlYXRlKGJ1ZmZlcikpOworICAgIH0KKyAgICAvLyBGSVhNRTogZmlndXJlIG91dCBob3cg
dG8gaWRlbnRpZnkgd2hlbiBhIHJlcXVlc3QgaGFzIGJlZW4gb3ZlcnJpZGRlbiB3aGVuIHdlIGFk
ZCB0aGlzIHRvIHRoZSBmcm9udGVuZC4KKyAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRo
UmVxdWVzdChyZXF1ZXN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVy
Y2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29u
c3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3Rh
dHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKQpAQCAtMTE1OCw2ICsxMjQwLDcg
QEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICAgICAgICAgIHBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZS0+cmVzcG9uZFdpdGhPcmlnaW5hbFJlc3BvbnNlKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KKwogICAgICAgICBvdmVycmlkZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIH0gZWxzZQogICAgICAgICBvdmVycmlkZURhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LnV0ZjgoKS5kYXRhKCksIGNvbnRlbnQudXRm
OCgpLmxlbmd0aCgpKTsKQEAgLTExNjUsNiArMTI0OCw5MiBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29ucwogICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZChvdmVycmlkZVJlc3Bv
bnNlLCBvdmVycmlkZURhdGEpOwogfQogCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5j
b2RlZCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgaW50IHN0YXR1cywgY29uc3QgU3RyaW5nJiBz
dGF0dXNUZXh0LCBjb25zdCBKU09OOjpPYmplY3QmIGhlYWRlcnMpCit7CisgICAgYXV0byBwZW5k
aW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElkKTsK
KyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Np
bmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBsb2FkZXIg
PSBwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXIuZ2V0KCk7CisgICAgaWYgKCFsb2FkZXItPmlkZW50
aWZpZXIoKSkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJVbmFibGUgdG8gZnVsZmlsbCByZXF1
ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgaWYgKGJhc2U2NEVu
Y29kZWQpIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICAgICAgaWYgKCFi
YXNlNjREZWNvZGUoY29udGVudCwgYnVmZmVyKSkgeworICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBjb250ZW50Il9zOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0ZjgoKS5sZW5ndGgoKSk7CisKKyAg
ICAvLyBNaW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9yIC0gcmVwb3J0IGRpZFJlY2VpdmVSZXNw
b25zZSAmIGRpZEZpbmlzaExvYWRpbmcuCisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShw
ZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXItPnVybCgpLCBtaW1lVHlwZSwgZGF0YS0+c2l6ZSgpLCBT
dHJpbmcoKSk7CisgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJj
ZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOworICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0
YXR1cyk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoc3RhdHVzVGV4dCk7CisgICAg
SFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7CisgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1
ZV0gOiBoZWFkZXJzKSB7CisgICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZTsKKyAgICAgICAgaWYg
KHZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICBleHBsaWNpdEhlYWRl
cnMuYWRkKGtleSwgaGVhZGVyVmFsdWUpOworICAgIH0KKyAgICByZXNwb25zZS5zZXRIVFRQSGVh
ZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJzKSk7CisgICAgcmVzcG9uc2Uuc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5
cGUoKSk7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIs
IGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCksIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7
CisgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1
ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlU3RyaW5nKQoreworICAgIGF1dG8gcGVuZGlu
Z1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7Cisg
ICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGxvYWRlciA9ICpwZW5kaW5nUmVxdWVzdC0+
bV9sb2FkZXIuZ2V0KCk7CisgICAgaWYgKGxvYWRlci5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7
CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBhYm9ydCByZXF1ZXN0LCBpdCBoYXMg
YWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJl
c291cmNlRXJyb3JUeXBlPihlcnJvclR5cGVTdHJpbmcpOworICAgIGlmICghZXJyb3JUeXBlKSB7
CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBlcnJvclR5cGU6ICJf
cywgZXJyb3JUeXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CisgICAgc3dpdGNoIChlcnJvclR5cGUudmFsdWUoKSkgeworICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VFcnJvclR5cGU6OkdlbmVy
YWw6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCBsb2FkZXIudXJsKCksICJSZXF1ZXN0IGludGVyY2VwdGVkIl9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6QWNjZXNzQ29udHJvbDoKKyAg
ICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IGxvYWRlci51cmwoKSwgIkFjY2VzcyBkZW5pZWQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFj
Y2Vzc0NvbnRyb2wpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpDYW5jZWxsYXRpb246CisgICAgICAgIGVy
cm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXIu
dXJsKCksICJSZXF1ZXN0IGNhbmNlbGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxs
YXRpb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0OgorICAgICAgICBlcnJvciA9IFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLnVybCgpLCAiUmVx
dWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLnVybCgpLCAiUmVxdWVzdCBpbnRlcmNl
cHRlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBsb2FkZXIuZGlkRmFpbChlcnJvcik7Cit9CisKIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewog
ICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAi
dGV4dC8iKQpAQCAtMTE4MSw2ICsxMzUwLDcgQEAgUmVmPFRleHRSZXNvdXJjZURlY29kZXI+IElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIoY29uc3QgU3RyaW5nJgogCiAg
ICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKG1pbWVUeXBlKSkKICAgICAg
ICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShtaW1lVHlwZSwgIlVURi04Iik7
CisKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsK
ICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBs
aWNhdGlvbi94bWwiX3MpOwogICAgICAgICBkZWNvZGVyLT51c2VMZW5pZW50WE1MRGVjb2Rpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oCmluZGV4IGJmZDEzMWU5YjU4NTZjODRkYTc3MjQ4MDVlNzEzOTdiN2M3
NDg2YTkuLjAzYjRjYmE0NTIwMWE1ZGYwM2RkNmYyOGQ4ZmYzMDU2NjE0NjYwYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuaApAQCAtODgsMTAgKzg4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlcmlhbGl6
ZWRDZXJ0aWZpY2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJp
bmcqIHNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZSkgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlV2ViU29j
a2V0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyog
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JikgZmluYWw7CiAgICAgdm9pZCBzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3Ry
aW5nJiwgYm9vbCBlbmFibGVkKSBmaW5hbDsKLSAgICB2b2lkIGFkZEludGVyY2VwdGlvbihFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBj
b25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykgZmlu
YWw7Ci0gICAgdm9pZCByZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwg
Y29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgaW50ZXJj
ZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkgZmluYWw7
CisgICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIGNhc2VTZW5z
aXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlSW50ZXJj
ZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0
d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBp
c1JlZ2V4KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5n
KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogdXJsLCBjb25zdCBTdHJpbmcqIG1l
dGhvZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25zdCBTdHJpbmcqIHBvc3REYXRh
KSBmaW5hbDsKICAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0
RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3QgaW50KiBzdGF0dXMsIGNvbnN0
IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzKSBmaW5hbDsK
KyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYg
c3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0JiBoZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lk
IGludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAt
MTE4LDkgKzEyMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoRG9j
dW1lbnRMb2FkZXImKTsKICAgICB2b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHZvaWQg
ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKLSAgICBib29sIHdpbGxJ
bnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIGJvb2wgd2lsbElu
dGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHNob3VsZEludGVyY2Vw
dFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNl
cHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBpbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxv
YWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYp
OwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24mLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwogICAgIHZvaWQgc2VhcmNoSW5SZXF1ZXN0KEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wg
Y2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKTsKQEAgLTE0MCw3ICsx
NDUsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVz
b3VyY2VUeXBlKTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCk7CisgICAgdXNpbmcg
TmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdl
OworICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCwgTmV0d29ya1N0YWdlKTsKKyAgICB2b2lk
IGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXNw
b25zZXMoKTsKIAogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKQEAgLTE1Myw2ICsxNjAsMzEgQEAgcHJpdmF0ZToKIAogICAgIGRv
dWJsZSB0aW1lc3RhbXAoKTsKIAorICAgIGNsYXNzIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0IHsK
KyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOwor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIFBl
bmRpbmdJbnRlcmNlcHRSZXF1ZXN0KFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbG9hZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgICAgICAgICAgOiBtX2xvYWRlcihsb2FkZXIpCisgICAgICAgICAgICAsIG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIHsg
fQorCisgICAgICAgIHZvaWQgY29udGludWVXaXRoT3JpZ2luYWxSZXF1ZXN0KCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFtX2xvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAg
ICAgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKG1fbG9hZGVyLT5yZXF1ZXN0KCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb250aW51ZVdpdGhSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb21wbGV0aW9u
SGFuZGxlcihyZXF1ZXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRS
ZXF1ZXN0KCkgPSBkZWZhdWx0OworICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IG1fbG9h
ZGVyOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIH07CisKICAgICBjbGFzcyBQZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTIw
NCwxNSArMjM2LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGJv
b2wgY2FzZVNlbnNpdGl2ZSB7IHRydWUgfTsKICAgICAgICAgYm9vbCBpc1JlZ2V4IHsgZmFsc2Ug
fTsKKyAgICAgICAgTmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSB7IE5ldHdvcmtTdGFnZTo6UmVz
cG9uc2UgfTsKIAogICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVyY2Vw
dCYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1cmwgPT0gb3Ro
ZXIudXJsCiAgICAgICAgICAgICAgICAgJiYgY2FzZVNlbnNpdGl2ZSA9PSBvdGhlci5jYXNlU2Vu
c2l0aXZlCi0gICAgICAgICAgICAgICAgJiYgaXNSZWdleCA9PSBvdGhlci5pc1JlZ2V4OworICAg
ICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdleAorICAgICAgICAgICAgICAg
ICYmIG5ldHdvcmtTdGFnZSA9PSBvdGhlci5uZXR3b3JrU3RhZ2U7CiAgICAgICAgIH0KICAgICB9
OwogICAgIFZlY3RvcjxJbnRlcmNlcHQ+IG1faW50ZXJjZXB0czsKKyAgICBIYXNoTWFwPFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0Pj4gbV9wZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5k
aW5nSW50ZXJjZXB0UmVzcG9uc2U+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25zZXM7CiAKICAg
ICAvLyBGSVhNRTogSW5zcGVjdG9yTmV0d29ya0FnZW50IHNob3VsZCBub3QgYmUgYXdhcmUgb2Yg
c3R5bGUgcmVjYWxjdWxhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDc4NzNiZjk5YmQyMzQ5NjY0OGNiYzM0
NDcwNDg4MTgyMTU4OTRjODEuLjNhNzExMjc3YThhYTdjNGYwMzU5MGMyZmU1NzgzYTI0YWY4MmE2
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcApAQCAtODQxLDcgKzg0MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
CiAKICAgICByZXF1ZXN0LnVwZGF0ZVJlZmVycmVyUG9saWN5KGRvY3VtZW50KCkgPyBkb2N1bWVu
dCgpLT5yZWZlcnJlclBvbGljeSgpIDogUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93
bmdyYWRlKTsKIAotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHRSZXF1ZXN0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgaWYgKElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdCgmZnJhbWUsIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXF1ZXN0LnNldENhY2hpbmdQb2xpY3koQ2FjaGlu
Z1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKTsKIAogICAgIGF1dG8mIHBhZ2UgPSAqZnJhbWUucGFn
ZSgpOwpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgVmVjdG9yPFJlZjxTVkdJbWFnZT4+IENhY2hlZFJl
c291cmNlTG9hZGVyOjphbGxDYWNoZWRTVkdJbWFnZXMoKSBjb25zdAogCiBSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KQogewotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQor
ICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHQoZnJhbWUoKSwg
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgIkluc3BlY3RvciBpbnRlcmNlcHQiX3MgfSk7CiAKICAg
ICBpZiAocmVxdWVzdC5jaGFyc2V0KCkuaXNFbXB0eSgpICYmICh0eXBlID09IENhY2hlZFJlc291
cmNlOjpUeXBlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5
bGVTaGVldCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDdkZTNjZDI1
MzlmYzNlNmY4YjY2OTcyNDNhMzc4OTU3YTU1MmE1NDUuLmEzMzg3MzQ0N2M5MGVjNjQzYmVlMzMz
MTViM2M5MmFkMWZiZmJjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCkBA
IC0xNTksOSArMTU5LDkgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS5kaXNhYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Lk5l
dHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZl
OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zNjQs
NyArMzY0LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJyaWRl
LnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJp
ZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5zcGVj
dG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAg
ICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2Uu
UmVzcG9uc2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZ
IChpT1MgMTMuMCk6IE5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0z
OTcsNyArMzk3LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9jYWxSZXNvdXJjZU92ZXJy
aWRlLnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3Zl
cnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVz
b3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTogSW5z
cGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAg
ICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3Rh
Z2UuUmVzcG9uc2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklM
SVRZIChpT1MgMTMuMCk6IE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3Qu
CkBAIC05MDgsMTIgKzkwOCwyMSBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElk
ZW50aWZpZXJNYXAuZGVsZXRlKHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICByZXF1
ZXN0SW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAg
ICAvLyBGSVhNRTogYWRkIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHN1cHBvcnQgdG8gdGhlIGZyb250
ZW5kLgorICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVz
dH0pOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQs
IHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbGV0IHVybCA9IFdJLnVybFdpdGhvdXRGcmFnbWVu
dChyZXNwb25zZS51cmwpOwogICAgICAgICBsZXQgbG9jYWxSZXNvdXJjZU92ZXJyaWRlID0gdGhp
cy5sb2NhbFJlc291cmNlT3ZlcnJpZGVGb3JVUkwodXJsKTsKICAgICAgICAgaWYgKCFsb2NhbFJl
c291cmNlT3ZlcnJpZGUgfHwgbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmRpc2FibGVkKSB7Ci0gICAg
ICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVlKHJlcXVlc3RJZCk7
CisgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVlLmludm9r
ZSh7CisgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCisgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMzc2LDcg
KzEzODUsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmws
CiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNl
U2Vuc2l0aXZlLAogICAgICAgICAgICAgaXNSZWdleDogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlz
UmVnZXgsCi0gICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5O
ZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgIH07
CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLmFkZEludGVy
Y2VwdGlvbiAvIE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRpZCBub3QgZXhpc3QuCkBAIC0x
NDMyLDQgKzE0NDEsNSBAQCBXSS5OZXR3b3JrTWFuYWdlci5FdmVudCA9IHsKICAgICBCb290c3Ry
YXBTY3JpcHREZXN0cm95ZWQ6ICJuZXR3b3JrLW1hbmFnZXItYm9vdHN0cmFwLXNjcmlwdC1kZXN0
cm95ZWQiLAogICAgIExvY2FsUmVzb3VyY2VPdmVycmlkZUFkZGVkOiAibmV0d29yay1tYW5hZ2Vy
LWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLWFkZGVkIiwKICAgICBMb2NhbFJlc291cmNlT3ZlcnJp
ZGVSZW1vdmVkOiAibmV0d29yay1tYW5hZ2VyLWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLXJlbW92
ZWQiLAorICAgIFJlcXVlc3RJbnRlcmNlcHRlZDogIm5ldHdvcmstbWFuYWdlci1yZXF1ZXN0LWlu
dGVyY2VwdGVkIgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcwppbmRleCA1OWMyOWM5
YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgwMGFhLi5mZTg4MjlhNzFiZmQwZWVkODU2YjQx
YzNhYWVjZTZhZTdmMWExNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCkBAIC0x
MDgsNiArMTA4LDExIEBAIFdJLk5ldHdvcmtPYnNlcnZlciA9IGNsYXNzIE5ldHdvcmtPYnNlcnZl
ciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlzcGF0Y2hlcgogICAgICAgICAvLyBGSVhNRTog
Tm90IGltcGxlbWVudGVkLgogICAgIH0KIAorICAgIHJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0
SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXF1ZXN0SW50
ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QpOworICAgIH0KKwogICAg
IHJlc3BvbnNlSW50ZXJjZXB0ZWQocmVxdWVzdElkLCByZXNwb25zZSkKICAgICB7CiAgICAgICAg
IFdJLm5ldHdvcmtNYW5hZ2VyLnJlc3BvbnNlSW50ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1
ZXN0SWQsIHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwZGRiMzUzMzQ0Mzg3ODRmYjIxNmZk
ZjcxMDg0Mjk3MjZmMmM2NjY3Li5mYWExZTE2MGY3NDhjYjJlMzVjMGQ2N2QwMTc2OWJhZTM4MmNm
ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CkBAIC0yMjgsNiAr
MjI5LDEzIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxv
YWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAoIXRyeUxvYWRpbmdV
c2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykp
IHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2No
ZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mi
KTsKKworICAgICAgICBpZiAoIXJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciAmJiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OnNob3VsZEludGVyY2VwdFJlcXVlc3QocmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgcmVzb3VyY2VM
b2FkZXIucmVxdWVzdCgpKSkgeworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9hZGVyLCBbdGhpcywgcHJvdGVjdGVk
UmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmUHRyKCZyZXNvdXJjZUxvYWRlciksIHRyYWNraW5nUGFy
YW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcmVzb3Vy
Y2VdKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIHNj
aGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcygqcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIsIHJl
cXVlc3QsIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZTBkNDE1YWMzMmU4NzI0YmRkZTRmNGY1NzFlMWJjY2NlYjhlZmIz
Yi4uNjFjZTk0NDk4NTZmMWExNDQ5MTE0NWQ0YWM2M2RjMzI2MzJlYWMwMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQzIEBACisyMDIwLTA2LTAzICBQYXZlbCBGZWxkbWFuIDxwYXZlbC5mZWxkbWFuQGdtYWls
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNl
cHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUg
TmV0d29yaworICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNl
cHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVk
LCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQor
ICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGludWUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291
cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVy
dGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRo
LWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJl
c291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
d2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQu
anM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90
b2NvbC10ZXN0LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNl
LW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNvbjogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTA2LTExICBPcmlvbCBC
cnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBSZWltcG9y
dCBXUFQgdGVzdHMgcmVtb3ZlZCBpbiByMjYyODA5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWQzOGI4NzFk
NTE2NjA2Y2MxNjU4MDdhNWJiZDM2ZTAwNjViMjQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1
ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitDT05TT0xFIE1FU1NBR0U6IFVuaGFu
ZGxlZCBQcm9taXNlIFJlamVjdGlvbjogQWJvcnRFcnJvcjogRmV0Y2ggaXMgYWJvcnRlZAorQ09O
U09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IEFib3J0RXJyb3I6IEZl
dGNoIGlzIGFib3J0ZWQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gb2YgdGhlIGFib3J0ZWQg
cmVxdWVzdC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdFdpdGhSZXNwb25zZS5BYm9ydGVkCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1BBU1M6IFNo
b3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbi4KK0Vycm9yOiBVbmFibGUgdG8gZnVsZmlsbCByZXF1
ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZAorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yLkFib3J0ZWQKK1RyaWdnZXJpbmcg
bG9hZC4uLgorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorRXJyb3I6IFVuYWJs
ZSB0byBhYm9ydCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1hYm9ydGVkLXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ZGYz
YjI5NDkwM2VlNmI0MWE5NTU5YmZhMmFhY2Q5NzljNGViZjYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVk
LXJlcXVlc3QuaHRtbApAQCAtMCwwICsxLDc3IEBACisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworYXN5bmMgZnVuY3Rp
b24gZmV0Y2hBbmRBYm9ydCgpIHsKKyAgICBsZXQgdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0IjsKKyAgICBsZXQgY29u
dHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgICBsZXQgeyBzaWduYWwgfSA9IGNv
bnRyb2xsZXI7CisgICAgZmV0Y2godXJsLCB7IHNpZ25hbCB9KTsKKyAgICBjb250cm9sbGVyLmFi
b3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3Rv
clRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnNlIik7CisKKyAgICBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAg
ICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvb3ZlcnJpZGUudHh0IiwKKyAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5O
ZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnNlLkFib3J0ZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaW50ZXJj
ZXB0aW9uIHRoYXQgZnVsZmlsbHMgYWJvcnRlZCByZXF1ZXN0IiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4i
KTsKKyAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJv
bWlzZS5hbGwoWworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3YWl0RXZlbnQo
V0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkKSwKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBmZXRjaEFuZEFib3J0KClgKSwKKyAg
ICAgICAgICAgIF0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4
Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXdhaXQgTmV0d29ya0FnZW50
LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudC5kYXRhLnJlcXVlc3RJZCwKKyAg
ICAgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5l
dHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAiRkFJTCIs
CisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICBtaW1lVHlwZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgICAgICAgICBzdGF0
dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAg
ICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yLkFib3J0ZWQiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQgcmVq
ZWN0cyBhYm9ydGVkIHJlcXVlc3QiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAg
bGV0IFtyZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYXdhaXRFdmVudChXSS5OZXR3b3JrTWFuYWdl
ci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQpLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoYGZldGNoQW5kQWJvcnQoKWApLAorICAgICAgICAgICAgXSk7CisK
KyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGFzeW5jICgp
ID0+IHsKKyAgICAgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVz
dFdpdGhFcnJvci5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVl
c3RJbnRlcmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBl
cnJvclR5cGU6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLlJlc291cmNlRXJyb3JUeXBl
LkdlbmVyYWwsCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVz
dCBpbnRlcmNlcHRpb24gb2YgdGhlIGFib3J0ZWQgcmVxdWVzdC48L3A+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGludWUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjMjc0YzU2NjI2NTIxNTYwMzBhMmRhNmNhOGMzZDM5ZjQ0
Zjc5MjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDIwIEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQgY29udGludWVzIHJlcXVl
c3QuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdENvbnRpbnVl
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVl
CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGNvbnRlbnQ6CitmdW5jdGlvbiBteVNjcmlw
dEpTKCkge30KKworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LkNvbnRpbnVlV3JvbmdTdGFnZQorVHJpZ2dlcmluZyBsb2FkLi4uCitQQVNTOiBTaG91bGQg
cHJvZHVjZSBhbiBleGNlcHRpb24uCitFcnJvcjogTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCBy
ZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWVXcm9uZ0lkCitUcmlnZ2VyaW5nIGxvYWQuLi4K
K1BBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbi4KK0Vycm9yOiBNaXNzaW5nIHBlbmRp
bmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LWNvbnRpbnVlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZlZmUzNzI1NjFm
ZmUxMmM2ZTVlODBjNTliZjk1M2EyYjMyZGEzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGlu
dWUuaHRtbApAQCAtMCwwICsxLDg5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiBmZXRjaERh
dGEodXJsKQoreworICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCk7CisgICAgcmV0
dXJuIGF3YWl0IHJlc3BvbnNlLnRleHQoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
bGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVy
Y2VwdENvbnRpbnVlIik7CisgICAgCisgICAgTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5p
bnZva2UoeworICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL3NjcmlwdC5qcyIsCisgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICB9KTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dC5Db250aW51ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBpbnRlcmNl
cHRpb24gdGhhdCBjb250aW51ZXMiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAg
ICAgbGV0IGludGVyY2VwdENvbnRpbnVlID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
bGV0IHsgdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QgfSA9IGV2ZW50LmRhdGE7CisgICAgICAg
ICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVlLmludm9rZSh7CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3Bl
Y3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgV0kubmV0d29ya01hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJj
ZXB0ZWQsIGludGVyY2VwdENvbnRpbnVlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0
IFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvc2NyaXB0LmpzJyki
KTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgUnVudGltZUFnZW50LmF3YWl0UHJvbWlz
ZShyZXNwb25zZS5yZXN1bHQub2JqZWN0SWQsIHRydWUpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIlJlc3BvbnNlIGNvbnRlbnQ6Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhyZXNwb25zZS5yZXN1bHQudmFsdWUpOworICAgICAgICAgICAgV0kubmV0d29ya01hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50
ZXJjZXB0ZWQsIGludGVyY2VwdENvbnRpbnVlKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LkNvbnRpbnVlV3JvbmdTdGFnZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVx
dWVzdCBpbnRlcmNlcHRpb24gdGhhdCBjb250aW51ZXMgd2l0aCB0aGUgd3Jvbmcgc3RhZ2UiLAor
ICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRy
aWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgbGV0IFtyZXF1ZXN0SW50ZXJjZXB0ZWRF
dmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgV0kubmV0d29ya01h
bmFnZXIuYXdhaXRFdmVudChXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0
ZWQpLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGZldGNo
RGF0YSgncmVzb3VyY2VzL3NjcmlwdC5qcycpYCksCisgICAgICAgICAgICBdKTsKKworICAgICAg
ICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4gewor
ICAgICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRDb250aW51ZS5pbnZv
a2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRlcmNlcHRlZEV2
ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9y
QmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5D
b250aW51ZVdyb25nSWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaW50
ZXJjZXB0aW9uIHRoYXQgY29udGludWVzIHdpdGggdGhlIHdyb25nIHN0YWdlIiwKKyAgICAgICAg
YXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5n
IGxvYWQuLi4iKTsKKyAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVkRXZlbnRdID0g
YXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3
YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkKSwKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBmZXRjaERhdGEoJ3Jl
c291cmNlcy9zY3JpcHQuanMnKWApLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGF3
YWl0IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGFzeW5jICgpID0+IHsKKyAgICAgICAg
ICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29udGludWUuaW52b2tlKHsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiAnd3JvbmdJZCcsCisgICAgICAgICAgICAgICAg
ICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVx
dWVzdCwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGlu
dGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyByZXF1ZXN0LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1mcmFnbWVudC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTYxYjA4ZDk2MWRlYjk3MTlkODBmYjk3MmE2N2Y1ZWUzMDAzZTI0
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjQgQEAKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gaW4gY29tYmluYXRpb24gd2l0aCBmcmFn
bWVudHMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFdpdGhS
ZXF1ZXN0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVS
TFdpdGhvdXRGcmFnbWVudEJhc2VsaW5lCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxl
c2hlZXQtd2l0aC1zb3VyY2VtYXAuY3NzP29uZQorUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1zb3Vy
Y2VtYXAuY3NzP29uZQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LlVSTFdpdGhGcmFnbWVudEJhc2VsaW5lCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVl
c3QgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L3N0eWxlc2hlZXQtd2l0aC1zb3VyY2VtYXAuY3NzP3R3byNmcmFnbWVudAorUmVzcG9uc2UgVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxl
c2hlZXQtd2l0aC1zb3VyY2VtYXAuY3NzP3R3byNmcmFnbWVudAorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTEFkZEZyYWdtZW50CitUcmlnZ2VyaW5n
IGxvYWQuLi4KK1JlcXVlc3QgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzCitSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MjZnJh
Z21lbnQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5V
UkxSZW1vdmVGcmFnbWVudAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IFVSTDogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNz
cyNmcmFnbWVudAorUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21l
bnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtZnJhZ21lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWYxZTk3ZTU3MTM3ZDE1NWUw
ZjVkM2JiMTY4YTFkMzljNTY4Mjk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1mcmFnbWVudC5odG1s
CkBAIC0wLDAgKzEsOTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9hZFN1YnJlc291cmNlKHVy
bCkKK3sKKyAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKKyAg
ICBsaW5rLnJlbCA9ICJzdHlsZXNoZWV0IjsKKyAgICBsaW5rLmhyZWYgPSB1cmw7CisgICAgZG9j
dW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsaW5rKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmlu
dGVyY2VwdFdpdGhSZXF1ZXN0Iik7CisgICAgTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5p
bnZva2UoeworICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzIiwKKyAgICAgICAgc3RhZ2U6IEluc3BlY3Rv
ckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgIH0pOworCisg
ICAgZnVuY3Rpb24gYWRkQmFzZWxpbmVUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJl
c3Npb24sIHNldHVwLCB0ZWFyZG93bn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLCB0ZWFyZG93biwKKyAgICAgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRy
aWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbcmVxdWVzdEV2ZW50LCBy
ZXNwb25zZUV2ZW50LCBmZXRjaFJlc3BvbnNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgICAgICAgICAgV0kuRnJhbWUuYXdhaXRFdmVudChXSS5GcmFtZS5FdmVudC5SZXNvdXJj
ZVdhc0FkZGVkKSwKKyAgICAgICAgICAgICAgICAgICAgV0kuUmVzb3VyY2UuYXdhaXRFdmVudChX
SS5SZXNvdXJjZS5FdmVudC5SZXNwb25zZVJlY2VpdmVkKSwKKyAgICAgICAgICAgICAgICAgICAg
UnVudGltZUFnZW50LmV2YWx1YXRlKGV4cHJlc3Npb24pLAorICAgICAgICAgICAgICAgIF0pOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCdSZXF1ZXN0IFVSTDogJyArIHJlcXVl
c3RFdmVudC5kYXRhLnJlc291cmNlLnVybCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coJ1Jlc3BvbnNlIFVSTDogJyArIHJlc3BvbnNlRXZlbnQudGFyZ2V0LnVybCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKyAgICBmdW5jdGlvbiBhZGRUZXN0Q2FzZSh7
bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Npb24sIHNldHVwLCB0ZWFyZG93biwgdXJsfSkgewor
ICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLCBkZXNjcmlwdGlv
biwgc2V0dXAsIHRlYXJkb3duLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAg
ICAgICAgICAgbGV0IFtyZXF1ZXN0RXZlbnQsIHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50LCBmZXRj
aFJlc3BvbnNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICAgICAgV0ku
RnJhbWUuYXdhaXRFdmVudChXSS5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkKSwKKyAgICAg
ICAgICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYXdhaXRFdmVudChXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQpLAorICAgICAgICAgICAgICAgICAgICBSdW50
aW1lQWdlbnQuZXZhbHVhdGUoZXhwcmVzc2lvbiksCisgICAgICAgICAgICAgICAgXSk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coJ1JlcXVlc3QgVVJMOiAnICsgcmVxdWVzdEV2
ZW50LmRhdGEucmVzb3VyY2UudXJsKTsKKworICAgICAgICAgICAgICAgIGxldCBbcmVzcG9uc2VF
dmVudCwgaW50ZXJjZXB0UmVzcG9uc2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgICAgICBXSS5SZXNvdXJjZS5hd2FpdEV2ZW50KFdJLlJlc291cmNlLkV2ZW50LlJlc3Bv
bnNlUmVjZWl2ZWQpLAorICAgICAgICAgICAgICAgICAgICBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0
V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDog
cmVxdWVzdEludGVyY2VwdGVkRXZlbnQuZGF0YS5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICB1cmwsCisgICAgICAgICAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgICAgIF0p
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCdSZXNwb25zZSBVUkw6ICcgKyBy
ZXNwb25zZUV2ZW50LnRhcmdldC51cmwpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAg
ICB9CisKKworICAgIGFkZEJhc2VsaW5lVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0LlVSTFdpdGhvdXRGcmFnbWVudEJhc2VsaW5lIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJUZXN0cyByZXNwb25zZSB1cmwgd2l0aG91dCBmcmFnbWVudCAtIGJhc2Vs
aW5lIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImxvYWRTdWJyZXNvdXJjZSgncmVzb3VyY2VzL3N0
eWxlc2hlZXQtd2l0aC1zb3VyY2VtYXAuY3NzP29uZScpIiwKKyAgICB9KTsKKworICAgIGFkZEJh
c2VsaW5lVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
LlVSTFdpdGhGcmFnbWVudEJhc2VsaW5lIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyBy
ZXNwb25zZSB1cmwgd2l0aCBmcmFnbWVudCAtIGJhc2VsaW5lIiwKKyAgICAgICAgZXhwcmVzc2lv
bjogImxvYWRTdWJyZXNvdXJjZSgncmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1zb3VyY2VtYXAu
Y3NzP3R3byNmcmFnbWVudCcpIiwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxBZGRGcmFnbWVudCIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGgg
VVJMIHdpdGggZnJhZ21lbnQiLAorICAgICAgICBleHByZXNzaW9uOiAibG9hZFN1YnJlc291cmNl
KCdyZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MnKSIsCisgICAgICAgIHVybDogImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MjZnJh
Z21lbnQiLAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTFJlbW92ZUZyYWdtZW50IiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gdGhhdCByZW1vdmVzIGZy
YWdtZW50IiwKKyAgICAgICAgZXhwcmVzc2lvbjogImxvYWRTdWJyZXNvdXJjZSgncmVzb3VyY2Vz
L3N0eWxlc2hlZXQuY3NzI2ZyYWdtZW50JykiLAorICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzIiwKKyAg
ICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50
ZXJjZXB0aW9uIGluIGNvbWJpbmF0aW9uIHdpdGggZnJhZ21lbnRzLjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4t
cmVzb3VyY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMTI1OTA0ODM1ZWYxMGI2YzA2MDM0
ZjYxNWYzZGVmMTE4ZjllYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQUxFUlQ6IE9SSUdJTkFMIEhUTUwgQ09OVEVOVAor
QUxFUlQ6IFJFUExBQ0VEIEhUTUwgQ09OVEVOVAorT3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
bWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjEy
NTkwNDgzNWVmMTBiNmMwNjAzNGY2MTVmM2RlZjExOGY5ZWFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorQUxFUlQ6IE9SSUdJTkFMIEhUTUwgQ09OVEVOVAorQUxFUlQ6IFJFUExBQ0VEIEhUTUwgQ09O
VEVOVAorT3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJj
ZS13aXRoLXJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNhMDEwZGVjYWZlOTE0MmE3ZThkMmFmNzkyNTRhYThiMjYyMWQ3YzkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCkBAIC0w
LDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9
IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
V2l0aFJlc3BvbnNlIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWFpblJlc291cmNlIHdpdGggcmVzcG9uc2UiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIk1haW4gcmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2Vw
dGlvbiBvbiBuZXh0IHBhZ2UgbG9hZCBhbmQgZnVsZmlsbHMgcmVxdWVzdCIsCisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0
aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1y
ZXNwb25zZS5odG1sIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuTmV0
d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCAoZXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7
CisgICAgICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9u
c2UuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAg
ICAgICAgICBtaW1lVHlwZTogInRleHQvaHRtbCIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRl
bnQ6IGA8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2luc3BlY3Rvci10ZXN0LmpzIj48L2ArYHNjcmlwdD48L2hlYWQ+PGJvZHk+PHA+T3ZlcnJpZGRl
biBwYWdlIGNvbnRlbnQ8L3A+PHNjcmlwdD5hbGVydCgiUkVQTEFDRUQgSFRNTCBDT05URU5UIik7
IFRlc3RQYWdlLmNvbXBsZXRlVGVzdCgpOzwvYCtgc2NyaXB0PjwvYm9keT48L2h0bWw+YCwKKyAg
ICAgICAgICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAor
ICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSwKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdl
KHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3Qg
cmVxdWVzdCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5nIHRoZSBtYWluIHJlc291cmNlIGxvYWQg
d2l0aCByZXNwb25zZS48L3A+Cis8c2NyaXB0PmFsZXJ0KCJPUklHSU5BTCBIVE1MIENPTlRFTlQi
KTs8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJj
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1tYWluLXJlc291cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkwNzE3OTY5YWQ1MjY2
YjI4ODY2YTViYmY0MGNlY2Q3M2I2MzdhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNv
dXJjZS5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5p
bnRlcmNlcHRXaXRoUmVxdWVzdCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiTWFpbiByZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9u
IG5leHQgcGFnZSBsb2FkIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGF3
YWl0IE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAg
ICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5z
cGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuc2luZ2xlRmlyZUV2ZW50
TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0
fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdFdp
dGhSZXF1ZXN0Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qt
b3ZlcnJpZGVuLXBhZ2UuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhd2FpdCBJ
bnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFs
bFJlc291cmNlczogdHJ1ZX0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5U
ZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBpbnRlcmNlcHRpbmcg
dGhlIG1haW4gcmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0PmFsZXJ0KCJPUklHSU5BTCBIVE1M
IENPTlRFTlQiKTs8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJv
cGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVjYWY5ZjZjZGIyOTVlMGI1MmEzNzc2ZGQ3NThiZDM5YzE4ZDljNWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODMgQEAKK1Rlc3Qg
cmVxdWVzdCBpbnRlcmNlcHRpb24gYWx0ZXJpbmcgcmVxdWVzdCBwcm9wZXJ0aWVzLgorCisKKz09
IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdAorLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2QKK1RyaWdnZXJp
bmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAK
KyAgTWV0aG9kOiBQT1NUCisgIFJlcXVlc3QgSGVhZGVyczoKKyAgICBDb250ZW50LUxlbmd0aDog
MAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhv
ZERlbGV0ZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2Ug
VVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2lu
dGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IERFTEVURQorICBSZXF1ZXN0IEhlYWRlcnM6Cisg
ICAgQ29udGVudC1MZW5ndGg6IDAKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50
ZXJjZXB0UmVxdWVzdC5NZXRob2ROb25TdGFuZGFyZAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1
ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNl
cHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IE5PTlNU
QU5EQVJECisgIFJlcXVlc3QgSGVhZGVyczoKKyAgICBDb250ZW50LUxlbmd0aDogMAorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZEVtcHR5CitU
cmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVj
aG8ucGhwCisgIE1ldGhvZDogR0VUCisgIFJlcXVlc3QgSGVhZGVyczoKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkwKK1RyaWdnZXJpbmcgbG9hZC4u
LgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
aW50ZXJjZXB0LWVjaG8ucGhwP25ld1VSTD12YWx1ZQorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8u
cGhwP25ld1VSTD12YWx1ZQorICBNZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgIEdl
dDoKKyAgICBuZXdVUkw6IHZhbHVlCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmlu
dGVyY2VwdFJlcXVlc3QuVVJMRnJhZ21lbnQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBk
ZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVj
aG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBHRVQKKyAgUmVx
dWVzdCBIZWFkZXJzOgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LlVSTEVtcHR5CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAg
VGhlIFVSTCBjYW7igJl0IGJlIHNob3duCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3Jr
LmludGVyY2VwdFJlcXVlc3QuSGVhZGVycworVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRl
dGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNo
by5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IEdFVAorICBSZXF1
ZXN0IEhlYWRlcnM6CisgICAgWC1WYWx1ZTogb3ZlcnJpZGRlbgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlBvc3REYXRhCitUcmlnZ2VyaW5nIGxvYWQu
Li4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2ludGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhv
ZDogUE9TVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6IDE2CisgICAg
Q29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKKyAgUG9zdDoK
KyAgICB2YWx1ZTogb3ZlcnJpZGRlbgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVl
c3QtcHJvcGVydGllcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMTgyODdkM2VkNDMwN2I0NjQ5Zjc0ZGEw
ZDA0YTNlNzA5YzM3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbApAQCAt
MCwwICsxLDE3OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkKK3sK
KyAgICB0cnkgeworICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOworICAg
ICAgICAvLyBFdmFsIHRvIGFjY2VwdCB0cmFpbGluZyBjb21hIEpTT04uCisgICAgICAgIGxldCBk
YXRhID0gZXZhbCgnKCcgKyAoYXdhaXQgcmVzcG9uc2UudGV4dCgpIHx8ICJ7fSIpICsgJyknKTsK
KyAgICAgICAgZGF0YS5yZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgcmV0dXJu
IGRhdGE7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm4geyBlcnJvcjogZS5tZXNz
YWdlIH07CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiBwb3N0RGF0YSh1cmwpCit7CisgICAg
bGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7CisgICAgICAgIG1ldGhvZDogIlBPU1Qi
LAorICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAiQ29udGVudC1UeXBlIjogImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsCisgICAgICAgIH0sCisgICAgICAgIGJvZHk6
ICJ2YWx1ZT1vcmlnaW5hbCIsCisgICAgfSk7CisgICAgLy8gRXZhbCB0byBhY2NlcHQgdHJhaWxp
bmcgY29tYSBKU09OLgorICAgIGxldCBkYXRhID0gZXZhbCgnKCcgKyAoYXdhaXQgcmVzcG9uc2Uu
dGV4dCgpIHx8ICJ7fSIpICsgJyknKTsKKyAgICBkYXRhLnJlc3BvbnNlVVJMID0gcmVzcG9uc2Uu
dXJsOworICAgIHJldHVybiBkYXRhOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQg
c3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0
V2l0aFJlcXVlc3QiKTsKKworICAgIE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tl
KHsKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAiLAorICAgICAgICBzdGFnZTogSW5zcGVjdG9y
QmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgfSk7CisKKyAg
ICBmdW5jdGlvbiBsb2dSZXF1ZXN0KHJlc3VsdCkgeworICAgICAgICBsZXQgcmVxdWVzdCA9IHJl
c3VsdC52YWx1ZTsKKyAgICAgICAgaWYgKHJlcXVlc3QuZXJyb3IpIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKGAgICR7cmVxdWVzdC5lcnJvcn1gKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBVUkk6ICR7cmVxdWVz
dC51cml9YCk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFJlc3BvbnNlIFVSTDogJHty
ZXF1ZXN0LnJlc3BvbnNlVVJMfWApOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBNZXRo
b2Q6ICR7cmVxdWVzdC5tZXRob2R9YCk7CisgICAgICAgIGxldCBoZWFkZXJLZXlzID0gT2JqZWN0
LmtleXMocmVxdWVzdC5oZWFkZXJzKTsKKyAgICAgICAgaWYgKGhlYWRlcktleXMubGVuZ3RoKSB7
CisgICAgICAgICAgICBoZWFkZXJLZXlzLnNvcnQoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKGAgIFJlcXVlc3QgSGVhZGVyczpgKTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUg
b2YgaGVhZGVyS2V5cykgeworICAgICAgICAgICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJY
LSIpICYmICFuYW1lLnN0YXJ0c1dpdGgoIkNvbnRlbnQtIikpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcXVlc3QuaGVhZGVyc1tu
YW1lXTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7
dmFsdWV9YCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IGdldEtleXMg
PSBPYmplY3Qua2V5cyhyZXF1ZXN0LmdldCk7CisgICAgICAgIGlmIChnZXRLZXlzLmxlbmd0aCkg
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiAgR2V0OiIpOworICAgICAgICAgICAg
Z2V0S2V5cy5zb3J0KCk7CisgICAgICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGdldEtleXMpIHsK
KyAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXF1ZXN0LmdldFtuYW1lXTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHBvc3RLZXlzID0gT2JqZWN0LmtleXMo
cmVxdWVzdC5wb3N0KTsKKyAgICAgICAgaWYgKHBvc3RLZXlzLmxlbmd0aCkgeworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIiAgUG9zdDoiKTsKKyAgICAgICAgICAgIHBvc3RLZXlzLnNv
cnQoKTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgcG9zdEtleXMpIHsKKyAgICAgICAg
ICAgICAgICBsZXQgdmFsdWUgPSByZXF1ZXN0LnBvc3RbbmFtZV07CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coYCAgICAke25hbWV9OiAke3ZhbHVlfWApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRl
c2NyaXB0aW9uLCBleHByZXNzaW9uLCBzZXR1cCwgdGVhcmRvd24sIG92ZXJyaWRlc30pIHsKKyAg
ICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24s
IHNldHVwLCB0ZWFyZG93biwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAg
ICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVkRXZlbnQsIGZldGNoUmVzcG9uc2VdID0gYXdh
aXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5h
d2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisg
ICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAg
ICAgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
SWQ6IHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAg
ICAgICAgICAuLi5vdmVycmlkZXMsCisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
ICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBSdW50aW1lQWdlbnQuYXdhaXRQcm9taXNlKGZldGNo
UmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiUmVxdWVzdCBkZXRhaWxzOiIpOworICAgICAgICAgICAgICAgIGxvZ1JlcXVl
c3QocmVzcG9uc2UucmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0Lk1ldGhvZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2Qg
aW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2Vz
L2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIlBP
U1QiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRGVsZXRlIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBERUxFVEUiLAorICAgICAg
ICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJyki
LAorICAgICAgICBvdmVycmlkZXM6IHsgbWV0aG9kOiAiREVMRVRFIiB9LAorICAgIH0pOworCisg
ICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
Lk1ldGhvZE5vblN0YW5kYXJkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0
IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBOT05TVEFOREFSRCIsCisgICAgICAgIGV4cHJlc3Np
b246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAg
IG92ZXJyaWRlczogeyBtZXRob2Q6ICJOT05TVEFOREFSRCIgfSwKKyAgICB9KTsKKworICAgIGFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRo
b2RFbXB0eSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50
ZXJjZXB0aW9uIHdpdGggZW1wdHkgc3RyaW5nIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNo
RGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVz
OiB7IG1ldGhvZDogIiIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkwiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRoIGRpZmZlcmVudCBVUkwi
LAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVj
aG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA/bmV3VVJM
PXZhbHVlIiB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTEZyYWdtZW50IiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBVUkwgd2l0aCBmcmFn
bWVudCIsCisgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNl
cHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeyB1cmw6ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCNm
cmFnbWVudCIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
Ik5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxFbXB0eSIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGggZW1wdHkgVVJMIiwKKyAg
ICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBo
cCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IHVybDogIiIgfSwKKyAgICB9KTsKKworICAgIGFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5IZWFk
ZXJzIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGhlYWRlcnMgaW50ZXJj
ZXB0aW9uIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVy
Y2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IGhlYWRlcnM6IHsgIlgtVmFs
dWUiOiAib3ZlcnJpZGRlbiIgfSB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlBvc3REYXRhIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IHBvc3QgZGF0YSBpbnRlcmNlcHRpb24iLAorICAg
ICAgICBleHByZXNzaW9uOiAicG9zdERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAn
KSIsCisgICAgICAgIG92ZXJyaWRlczogeworICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCisg
ICAgICAgICAgICBwb3N0RGF0YTogYnRvYSgidmFsdWU9b3ZlcnJpZGRlbiIpLAorICAgICAgICB9
LAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVz
dCBpbnRlcmNlcHRpb24gYWx0ZXJpbmcgcmVxdWVzdCBwcm9wZXJ0aWVzLjwvcD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU1ZjRlMDdlZmI2MjZhM2ZhM2ZjZTk1
NmQzYzUxMWY5ODAyM2FhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxFUlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAor
QUxFUlQ6IE9WRVJSSURFTiBvdmVycmlkZS5qcyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0
aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVzb3VyY2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRl
c3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6
IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVy
cm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGJmZDQ3M2ZhOTg0OWVlZDAwNWI2NDFkOGQz
ZDIxMTY4ODBmZWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9y
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitBTEVSVDogRXJyb3IgbG9hZGluZyBzdHls
ZXNoZWV0CitDT05TT0xFIE1FU1NBR0U6IEFjY2VzcyBkZW5pZWQKK0FMRVJUOiBFcnJvciBsb2Fk
aW5nIHN0eWxlc2hlZXQKK0FMRVJUOiBFcnJvciBsb2FkaW5nIHN0eWxlc2hlZXQKK0FMRVJUOiBF
cnJvciBsb2FkaW5nIHN0eWxlc2hlZXQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBl
cnJvciBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBnZW5lcmFsIGVycm9y
CitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxVUkUgVEVYVDogUmVxdWVzdCBpbnRlcmNlcHRlZAor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291
cmNlIHdpdGggYWNjZXNzIGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxVUkUgVEVYVDog
QWNjZXNzIGRlbmllZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggY2FuY2VsZWQgZXJyb3IKK1RyaWdnZXJpbmcgbG9hZC4u
LgorRkFJTFVSRSBURVhUOiBSZXF1ZXN0IGNhbmNlbGVkCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCB0aW1lb3V0IGVycm9y
CitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxVUkUgVEVYVDogUmVxdWVzdCB0aW1lZCBvdXQKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNl
LXdpdGgtZXJyb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzQ3NWU1Y2VlZmQxMjYwYjBiZWUwMjUwYTk1
NzllZmUyNDEzOGNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9y
Lmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2FkU3VicmVzb3Vy
Y2UoKQoreworICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpOwor
ICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOworICAgIGxpbmsuaHJlZiA9ICJyZXNvdXJjZXMv
c3R5bGVzaGVldC5jc3MiOworICAgIGxpbmsub25lcnJvciA9ICgpID0+IGFsZXJ0KCdFcnJvciBs
b2FkaW5nIHN0eWxlc2hlZXQnKTsKKyAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmsp
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvciIpOwor
ICAgIE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNo
ZWV0LmNzcyIsCisgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5O
ZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICB9KTsKKworICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNl
KHtuYW1lLCBkZXNjcmlwdGlvbiwgZXhwcmVzc2lvbiwgc2V0dXAsIHRlYXJkb3duLCBlcnJvclR5
cGV9KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsIGRl
c2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24sCisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgewor
ICAgICAgICAgICAgICAgIFdJLlJlc291cmNlLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLlJl
c291cmNlLkV2ZW50LkxvYWRpbmdEaWRGYWlsLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coJ0ZBSUxVUkUgVEVYVDogJyArIGV2ZW50LnRhcmdldC5m
YWlsdXJlUmVhc29uVGV4dCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAg
IGxldCBbcmVxdWVzdEludGVyY2VwdGVkRXZlbnQsIGZldGNoUmVzcG9uc2VdID0gYXdhaXQgUHJv
bWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2
ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAg
ICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgnbG9hZFN1YnJlc291cmNlKCknKSwK
KyAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2Vu
dC5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RJZDogcmVxdWVzdEludGVyY2VwdGVkRXZlbnQuZGF0YS5yZXF1ZXN0SWQsCisgICAg
ICAgICAgICAgICAgICAgIGVycm9yVHlwZSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggZ2VuZXJhbCBl
cnJvciIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGlu
dGVyY2VwdGlvbiB3aXRoIGdlbmVyYWwgZXJyb3IiLAorICAgICAgICBlcnJvclR5cGU6IEluc3Bl
Y3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLlJlc291cmNlRXJyb3JUeXBlLkdlbmVyYWwsCisgICAg
fSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBhY2Nlc3MgZXJyb3IiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBhY2Nlc3Mg
ZXJyb3IiLAorICAgICAgICBlcnJvclR5cGU6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3Jr
LlJlc291cmNlRXJyb3JUeXBlLkFjY2Vzc0NvbnRyb2wsCisgICAgfSk7CisKKyAgICBhZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3Vy
Y2Ugd2l0aCBjYW5jZWxlZCBlcnJvciIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3Vy
Y2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGNhbmNlbGVkIGVycm9yIiwKKyAgICAg
ICAgZXJyb3JUeXBlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5SZXNvdXJjZUVycm9y
VHlwZS5DYW5jZWxsYXRpb24sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCB0aW1lb3V0
IGVycm9yIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3Qg
aW50ZXJjZXB0aW9uIHdpdGggdGltZW91dCBlcnJvciIsCisgICAgICAgIGVycm9yVHlwZTogSW5z
cGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuUmVzb3VyY2VFcnJvclR5cGUuVGltZW91dCwKKyAg
ICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50
ZXJjZXB0aW9uIHdpdGggZXJyb3IgZm9yIHRoZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhkNzBhMTY2Yzc2OTEzYThlZGUzMzgyZWI5YzJmOGVmOTkyZWE3ODIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorQUxFUlQ6IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJS
SURERU4gb3ZlcnJpZGUuanMgVEVYVAorVGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJl
c3BvbnNlIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3Vp
dGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIHJlc3BvbnNl
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJy
ZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThmNjUzNGQ0YjI4NGVkMGVj
ODVjNzQ2MjRmYTdkMzBmZjNhMTBhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Ut
d2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgi
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIik7CisKKyAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVz
b3VyY2Ugd2l0aCByZXNwb25zZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2Ug
dXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlIiwKKyAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24u
aW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLmpzIiwKKyAgICAgICAgICAgICAgICBz
dGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3Qs
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuc2luZ2xl
RmlyZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2Vw
dGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElk
LCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgTmV0d29ya0FnZW50Lmlu
dGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZTogInRleHQvamF2YXNjcmlw
dCIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGBhbGVydCgiT1ZFUlJJRERFTiBvdmVy
cmlkZS5qcyBURVhUIik7IFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJPdmVycmlk
ZUNvbnRlbnREaWRMb2FkIik7YCwKKyAgICAgICAgICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDog
ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgICAg
ICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSwK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhd2Fp
dCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0
ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5h
d2FpdEV2ZW50KCJPdmVycmlkZUNvbnRlbnREaWRMb2FkIik7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0
aW9uIHdpdGggcmVzcG9uc2UgZm9yIHRoZSBzdWJyZXNvdXJjZSBsb2FkLjwvcD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvb3ZlcnJpZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFmNTg3OWMxNzllMmQzMGY5ZjhjZmQyNjZkMzk4NTY4OGFkNjg3NGEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVB
c3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QiKTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNv
dXJjZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGlu
dGVyY2VwdGlvbiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCBO
ZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJs
OiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVy
cmlkZS5qcyIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5O
ZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBXSS5uZXR3b3JrTWFuYWdlci5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgIGxldCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9ID0gZXZlbnQuZGF0YTsKKyAgICAg
ICAgICAgICAgICBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsKKyAg
ICAgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzIiwK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uo
e2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOworICAg
ICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJPdmVycmlkZUNvbnRlbnRE
aWRMb2FkIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0Fu
ZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVz
b3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MGI1
YmE3ZGI4ZmQyMGM5YzM5YTJlNzg1ZWM2MTg0OWY5NzM4ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzEgQEAKK0FMRVJUOiBERUZB
VUxUIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNw
b25zZS4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdFdpdGhSZXNwb25zZS5UZXh0CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFp
bHM6CisgIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9vdmVycmlkZS50eHQKKyAgTUlNRSBUeXBlOiB0ZXh0L3BsYWluCisgIFN0YXR1czogOTg3
IE92ZXJyaWRlIFN0YXR1cyBUZXh0CisgIFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVudC10
eXBlOiB0ZXh0L3BsYWluCisgICAgeC1vdmVycmlkZS1oZWFkZXItMTogT3ZlcnJpZGUtSGVhZGVy
LVZhbHVlLTEKKyAgICB4LW92ZXJyaWRlLWhlYWRlci0yOiBPdmVycmlkZS1IZWFkZXItVmFsdWUt
MgorICBDb250ZW50OiBQQVNTIC0gT1ZFUlJJRERFTiBURVhUCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuSmF2YVNjcmlwdAorVHJp
Z2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUg
VHlwZTogYXBwbGljYXRpb24vamF2YXNjcmlwdAorICBTdGF0dXM6IDIwMCBTdXBlciBPSworICBS
ZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vamF2YXNjcmlw
dAorICAgIHgtY3VzdG9tLWhlYWRlcjogSGVhZGVyIHZhbHVlCisgIENvbnRlbnQ6IC8qIFBBU1Mg
Ki8gKGZ1bmN0aW9uKCkgeyAvKiBPVkVSUklEREVOICovIH0pKCk7CisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuSW1hZ2UKK1RyaWdn
ZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4dAorICBNSU1FIFR5
cGU6IGltYWdlL3BuZworICBTdGF0dXM6IDIwMCBPSworICBSZXNwb25zZSBIZWFkZXJzOgorICAg
IGNvbnRlbnQtdHlwZTogaW1hZ2UvcG5nCisgIENvbnRlbnQ6IDxkYXRhPgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLlVSTC5RdWVy
eVN0cmluZworVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxzOgorICBVUkw6IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUu
dHh0P3M9MgorICBNSU1FIFR5cGU6IHRleHQvcGxhaW4KKyAgU3RhdHVzOiAyMDAgT0sKKyAgUmVz
cG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IHRleHQvcGxhaW4KKyAgICB4LWV4cGVj
dGVkOiBQQVNTCisgIENvbnRlbnQ6IFBBU1MKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuRnJhZ21lbnQKK1RyaWdnZXJpbmcg
bG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4dAorICBNSU1FIFR5cGU6IHRl
eHQvcGxhaW4KKyAgU3RhdHVzOiAyMDAgT0sKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250
ZW50LXR5cGU6IHRleHQvcGxhaW4KKyAgICB4LWV4cGVjdGVkOiBQQVNTCisgIENvbnRlbnQ6IFBB
U1MKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhS
ZXNwb25zZS40MDQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJy
aWRlLnR4dAorICBNSU1FIFR5cGU6IHRleHQvcGxhaW4KKyAgU3RhdHVzOiA0MDQgTm90IEZvdW5k
CisgIFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVudC10eXBlOiB0ZXh0L3BsYWluCisgICAg
eC1leHBlY3RlZDogUEFTUworICBDb250ZW50OiBQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1y
ZXNwb25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU0NWExNWQ2
NmZmMDhiMTczMWUyZDI5YzhmYzAxMDY3YjdkNzE1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0
aC1yZXNwb25zZS5odG1sCkBAIC0wLDAgKzEsMTczIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0
aW9uIHRyaWdnZXJPdmVycmlkZUxvYWQodXJsU3VmZml4KSB7CisgICAgbGV0IHVybCA9ICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4
dCI7CisgICAgaWYgKHVybFN1ZmZpeCkKKyAgICAgICAgdXJsICs9IHVybFN1ZmZpeDsKKworICAg
IHRyeSB7CisgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCk7CisgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICB1cmw6IHJlc3BvbnNlLnVybCwKKyAgICAgICAgICAgIHRl
eHQ6IGF3YWl0IHJlc3BvbnNlLnRleHQoKSwKKyAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uu
c3RhdHVzLAorICAgICAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCwKKyAg
ICAgICAgICAgIGhlYWRlcnM6IEFycmF5LmZyb20ocmVzcG9uc2UuaGVhZGVycyksCisgICAgICAg
IH07CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm4geyBlcnJvcjogZS5tZXNzYWdl
IH07CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhS
ZXNwb25zZSIpOworICAgIAorICAgIE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tl
KHsKKyAgICAgICAgdXJsOiAiLipvdmVycmlkZVwudHh0LioiLAorICAgICAgICBpc1JlZ2V4OiB0
cnVlLAorICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBsb2dSZXNwb25zZShyZXNw
b25zZSkgeworICAgICAgICByZXNwb25zZS5oZWFkZXJzID0gbmV3IE1hcChyZXNwb25zZS5oZWFk
ZXJzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgVVJMOiAke3Jlc3BvbnNlLnVybH1g
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgTUlNRSBUeXBlOiAke3Jlc3BvbnNlLmhl
YWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKX1gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
YCAgU3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBSZXNwb25zZSBIZWFkZXJzOmApOworICAgICAg
ICBsZXQga2V5cyA9IEFycmF5LmZyb20ocmVzcG9uc2UuaGVhZGVycy5rZXlzKCkpOworICAgICAg
ICBrZXlzLnNvcnQoKTsKKyAgICAgICAgZm9yIChsZXQgbmFtZSBvZiBrZXlzKSB7CisgICAgICAg
ICAgICBsZXQgdmFsdWUgPSByZXNwb25zZS5oZWFkZXJzLmdldChuYW1lKTsKKyAgICAgICAgICAg
IGlmICghbmFtZS5zdGFydHNXaXRoKCJ4LSIpICYmICFuYW1lLnN0YXJ0c1dpdGgoImNvbnRlbnQt
IikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgIH0KKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coYCAgQ29udGVudDogJHtyZXNwb25zZS50ZXh0fWApOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgc2V0dXAsIHRlYXJkb3du
LCBleHByZXNzaW9uLCByZXNwb25zZURhdGF9KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgdGVhcmRvd24sCisgICAg
ICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgW3JlcXVlc3RJbnRl
cmNlcHRlZEV2ZW50LCBmZXRjaFJlc3BvbnNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYXdhaXRFdmVudChXSS5OZXR3b3JrTWFu
YWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQpLAorICAgICAgICAgICAgICAgICAgICBSdW50
aW1lQWdlbnQuZXZhbHVhdGUoZXhwcmVzc2lvbiksCisgICAgICAgICAgICAgICAgXSk7CisKKyAg
ICAgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNw
b25zZS5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRl
cmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAuLi5yZXNw
b25zZURhdGEsCisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgcmVz
cG9uc2UgPSBhd2FpdCBSdW50aW1lQWdlbnQuYXdhaXRQcm9taXNlKGZldGNoUmVzcG9uc2UucmVz
dWx0Lm9iamVjdElkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
UmVzcG9uc2UgZGV0YWlsczoiKTsKKyAgICAgICAgICAgICAgICBsb2dSZXNwb25zZShyZXNwb25z
ZS5yZXN1bHQudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RX
aXRoUmVzcG9uc2UuVGV4dCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiSW50ZXJjZXB0IHJlcXVl
c3Qgd2l0aCB0ZXh0IGNvbnRlbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVy
cmlkZUxvYWQoKWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgY29udGVu
dDogYFBBU1MgLSBPVkVSUklEREVOIFRFWFRgLAorICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDog
ZmFsc2UsCisgICAgICAgICAgICBtaW1lVHlwZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAg
c3RhdHVzOiA5ODcsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT3ZlcnJpZGUgU3RhdHVzIFRl
eHQiLAorICAgICAgICAgICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICJYLU92ZXJyaWRl
LUhlYWRlci0xIjogIk92ZXJyaWRlLUhlYWRlci1WYWx1ZS0xIiwKKyAgICAgICAgICAgICAgICAi
WC1PdmVycmlkZS1IZWFkZXItMiI6ICJPdmVycmlkZS1IZWFkZXItVmFsdWUtMiIsCisgICAgICAg
ICAgICB9LAorICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkphdmFTY3JpcHQi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIkludGVyY2VwdCByZXF1ZXN0IHdpdGggamF2YXNjcmlw
dCBjb250ZW50LiIsCisgICAgICAgIGV4cHJlc3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKClg
LAorICAgICAgICByZXNwb25zZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRlbnQ6IGAvKiBQQVNT
ICovIChmdW5jdGlvbigpIHsgLyogT1ZFUlJJRERFTiAqLyB9KSgpO2AsCisgICAgICAgICAgICBi
YXNlNjRFbmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIsCisgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgIHN0YXR1
c1RleHQ6ICJTdXBlciBPSyIsCisgICAgICAgICAgICBoZWFkZXJzOiB7CisgICAgICAgICAgICAg
ICAgIlgtQ3VzdG9tLUhlYWRlciI6ICJIZWFkZXIgdmFsdWUiLAorICAgICAgICAgICAgfSwKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5JbWFnZSIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiSW50ZXJjZXB0IHJlcXVlc3Qgd2l0aCBpbWFnZSBjb250ZW50LiIsCisgICAgICAg
IGV4cHJlc3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKClgLAorICAgICAgICByZXNwb25zZURh
dGE6IHsKKyAgICAgICAgICAgIGNvbnRlbnQ6IGJ0b2EoIjxkYXRhPiIpLAorICAgICAgICAgICAg
YmFzZTY0RW5jb2RlZDogdHJ1ZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAiaW1hZ2UvcG5nIiwK
KyAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwK
KyAgICAgICAgICAgIGhlYWRlcnM6IHt9LAorICAgICAgICB9LAorICAgIH0pOworCisgICAgYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnNlLlVSTC5RdWVyeVN0cmluZyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCBvdmVy
cmlkZXMgd2l0aCBkaWZmZXJlbnQgcXVlcnkgc3RyaW5ncy4iLAorICAgICAgICBleHByZXNzaW9u
OiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgiP3M9MiIpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7
CisgICAgICAgICAgICBiYXNlNjRFbmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIGNvbnRlbnQ6
ICJQQVNTIiwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisgICAgICAgICAg
ICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAg
ICBoZWFkZXJzOiB7IlgtRXhwZWN0ZWQiOiAiUEFTUyJ9LAorICAgICAgICB9LAorICAgIH0pOwor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0V2l0aFJlc3BvbnNlLlVSTC5GcmFnbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVz
dCBvdmVycmlkZSBmb3IgYSBsb2FkIHdpdGggYSBmcmFnbWVudC4iLAorICAgICAgICBleHByZXNz
aW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgiI2ZyYWciKWAsCisgICAgICAgIHJlc3BvbnNlRGF0
YTogeworICAgICAgICAgICAgY29udGVudDogIlBBU1MiLAorICAgICAgICAgICAgYmFzZTY0RW5j
b2RlZDogZmFsc2UsCisgICAgICAgICAgICBtaW1lVHlwZTogInRleHQvcGxhaW4iLAorICAgICAg
ICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAg
ICAgICAgaGVhZGVyczogeyJYLUV4cGVjdGVkIjogIlBBU1MifSwKKyAgICAgICAgfSwKKyAgICB9
KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdFdpdGhSZXNwb25zZS40MDQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgZm9y
IGEgNDA0IG92ZXJyaWRlLiIsCisgICAgICAgIGV4cHJlc3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVM
b2FkKClgLAorICAgICAgICByZXNwb25zZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRlbnQ6ICJQ
QVNTIiwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWlt
ZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1czogNDA0LAorICAgICAgICAg
ICAgc3RhdHVzVGV4dDogIk5vdCBGb3VuZCIsCisgICAgICAgICAgICBoZWFkZXJzOiB7IlgtRXhw
ZWN0ZWQiOiAiUEFTUyJ9LAorICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNwb25zZS48
L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kOWFiNTBhNTdhNDRkYThiYzZmMTE4ZWI1ZmRlYmJlNzEyYWY0ZTFjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgICAidXJpIjog
Ijw/cGhwIGVjaG8gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gPz4iLAorICAgICJtZXRob2QiOiAi
PD9waHAgZWNobyAkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXTsgPz4iLAorICAgICJoZWFkZXJz
IjogeworPD9waHAgZm9yZWFjaCAoZ2V0YWxsaGVhZGVycygpIGFzICRuYW1lID0+ICR2YWx1ZSkg
eyA/PgorICAgICAgICAiPD9waHAgZWNobyAkbmFtZTsgPz4iOiAiPD9waHAgZWNobyAkdmFsdWU7
ID8+IiwKKzw/cGhwIH0gPz4gfSwKKyAgICAiZ2V0IjogeworPD9waHAgZm9yZWFjaCAoJF9HRVQg
YXMgJG5hbWUgPT4gJHZhbHVlKSB7ID8+CisgICAgICAgICI8P3BocCBlY2hvICRuYW1lOyA/PiI6
ICI8P3BocCBlY2hvICR2YWx1ZTsgPz4iLAorPD9waHAgfSA/PgorICAgIH0sCisgICAgInBvc3Qi
OiB7Cis8P3BocCBmb3JlYWNoICgkX1BPU1QgYXMgJG5hbWUgPT4gJHZhbHVlKSB7ID8+CisgICAg
ICAgICI8P3BocCBlY2hvICRuYW1lOyA/PiI6ICI8P3BocCBlY2hvICR2YWx1ZTsgPz4iLAorPD9w
aHAgfSA/PgorICAgIH0sCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFn
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjIy
MTY3ZWRiMGJiZTNmYjA3MmM0NzFlYzgyMzc0OTUzYTVkMmE2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJj
ZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPjwvaGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj4KKyAgICA8L3NjcmlwdD4KKyAgICA8Ym9keT4K
KyAgICAgICAgPHA+T3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQ8L3A+CisgICAgICAgIDxzY3JpcHQ+
YWxlcnQoIlJFUExBQ0VEIEhUTUwgQ09OVEVOVCIpOyBUZXN0UGFnZS5jb21wbGV0ZVRlc3QoKTs8
L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1v
dmVycmlkZW4tc2NyaXB0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NzhlYzRlMjYxMTU3ZDMzMDkxOWMxMzI4OTk5NTU3Nzk4OTM3ZWFiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcwpAQCAtMCwwICsxLDIg
QEAKK2FsZXJ0KCJPVkVSUklERU4gb3ZlcnJpZGUuanMgVEVYVCIpOworVGVzdFBhZ2UuZGlzcGF0
Y2hFdmVudFRvRnJvbnRlbmQoIk92ZXJyaWRlQ29udGVudERpZExvYWQiKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29s
LXRlc3QuanMKaW5kZXggYTAyNjQ5ZDU2YmRiM2QyODVjMWYwZDdmODAwY2ZlNDEwODkyMjY0MS4u
ODMxYTYxZjY3ODVlNDQ4OGIxMmQ3ZGZkZWYxZmU2NmQzNzU1MTIyMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29s
LXRlc3QuanMKQEAgLTg3LDEyICs4NywxNCBAQCBUZXN0UGFnZS5ydW5UZXN0ID0gd2luZG93LnJ1
blRlc3QgPSBmdW5jdGlvbigpCiAgICAgaWYgKHR5cGVvZiB0ZXN0RnVuY3Rpb24gIT09ICJmdW5j
dGlvbiIpIHsKICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBzZW5kIHRlc3QoKSBiZWNhdXNlIGl0
IGlzIG5vdCBhIGZ1bmN0aW9uLiIpOwogICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGxldCB1cmwgPSB0ZXN0UnVubmVyLmluc3Bl
Y3RvclRlc3RTdHViVVJMOwogICAgIGlmICghdXJsKSB7CiAgICAgICAgIGFsZXJ0KCJGYWlsZWQg
dG8gb2J0YWluIGluc3BlY3RvciB0ZXN0IHN0dWIgVVJMLiIpOwogICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1
bkluaXRpYWxpemF0aW9uTWV0aG9kc0luRnJvbnRlbmQoaW5pdGlhbGl6ZXJzKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUt
Y29udGludWUtcmVzcG9uc2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xv
Y2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKaW5kZXggNDQ4MDY0
MjAwNDQ3Njk3ZmIwN2Y0MTZlOTc4NjM5OGUwMDNkMjQ2MC4uZDY2ZTE0MGViNzE3ODY0N2MzODg2
MjliMGQxM2UxYWEwMWEwMzBjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1j
b250aW51ZS1yZXNwb25zZS5odG1sCkBAIC00Niw3ICs0Niw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICAgICAgLy8gTGV0IHRoZSBsb2FkIGNvbnRpbnVlLgogICAgICAgICAgICAgYXdhaXQg
UHJvbWlzZS5hbGwoWwogICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0RXZl
bnQoe2V2ZW50OiAiTmV0d29yay5yZXNwb25zZVJlY2VpdmVkIn0pLAotICAgICAgICAgICAgICAg
IEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFuZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNl
cHRDb250aW51ZSIsIHBhcmFtczoge3JlcXVlc3RJZDogbWVzc2FnZU9iamVjdC5wYXJhbXMucmVx
dWVzdElkfX0pLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclByb3RvY29sLmF3YWl0Q29tbWFu
ZCh7bWV0aG9kOiAiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIsIHBhcmFtczoge3JlcXVlc3RJ
ZDogbWVzc2FnZU9iamVjdC5wYXJhbXMucmVxdWVzdElkLCBzdGFnZTogInJlc3BvbnNlIn19KSwK
ICAgICAgICAgICAgIF0pOwogICAgICAgICAgICAgUHJvdG9jb2xUZXN0LnBhc3MoIlJlc3BvbnNl
IHJlY2VpdmVkLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvZGF0YS1pbnRlcmNlcHRlZC5qc29uIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNvbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjRl
MmIwZDk5NjdjZWIxZWQ3ZTMyY2QxOTI5MzVkZjE3NjU4MTI2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQu
anNvbgpAQCAtMCwwICsxIEBACitpbnRlcmNlcHRlZCByZXF1ZXN0ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDM5MzVmZWI3NDRkNDdjZjYxZmQzYzFmMzM4OTJiYmU3ZjJhZTliOTYuLjZkZDRm
YzAyYjU1NjczNGFkZTU3MmQ2ZmNmYWU1NzIzYjU2OWYwMmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU3NCw2ICs1NzQsMTggQEAgaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1zY3JpcHQt
dGFnLmh0bWwgWyBGYWlsdXJlIF0KIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3Vy
Y2UtcmVzcG9uc2UtaW5zcGVjdG9yLW92ZXJyaWRlLmh0bWwgWyBGYWlsdXJlIF0KIGluc3BlY3Rv
ci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwg
WyBTa2lwIF0KIAorIyBSZXF1ZXN0IGludGVyY2VwdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluIFdl
YktpdDEKK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVx
dWVzdC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLmh0bWwg
WyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
bWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sIFsgU2tpcCBd
CitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291
cmNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVz
cG9uc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLmh0bWwgWyBTa2lwIF0KKwogd2Via2l0Lm9yZy9iLzE2
NDkzMyBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgWyBGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2NTU0MSBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9m
aXhlZC1vdmVybGFwLWV4dGVudC1ydGwuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401935</attachid>
            <date>2020-06-15 14:02:56 -0700</date>
            <delta_ts>2020-06-15 14:32:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200615140255.patch</filename>
            <type>text/plain</type>
            <size>113232</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTk1MjMwNmRlNGQ3MDNlYWNkY2VkYTliYzFlNjUxYzg0OGFmNGE4Li4xMjhjMTk4ZmE5YTczMzk1
MDYyZTNiNTg3NDkwNTJjMTVhYTZmNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0xMSAgUGF1bG8gTWF0
b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBpbmNsdWRlIHRv
IEpTT05PYmplY3QuY3BwIC0gbm9uLXVuaWZpZWQgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGM5MDI3
ZjM1ZDA3ZjcyOTQwMjVmY2Y3ZGY5NjM5MzQzYTllNmM5Li40YWFlMGRiN2JhOTA4Mzg0N2ExYTc2
OWNkMWJjY2Y5ZTg2N2U1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjAtMDYt
MDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAg
cHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90
aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVs
ZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3Qn
IGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGlu
dWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1mcmFnbWVudC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2Uu
aHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hv
dWxkSW50ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6Omlu
dGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNv
bnRpbnVlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0Q29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVz
dDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdDo6Y29udGludWVXaXRoT3JpZ2lu
YWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6UGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3Q6OmNvbnRpbnVlV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0w
Ni0xMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcHJvdmUgdXJs
LXNldHRlcnMuaHRtbCBXUFQgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMDFlZmUz
ZDJmMGU5ODg1NjU3NDE5ZDIxNzBiYTBkYzRlNWNjNzU0NC4uZjUyZmQ5ZThiMmUwNzE1YmQ2Y2Rj
MDQ0NzU5MTM0NDg2YzIyZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMjAtMDYtMDMgIFBhdmVsIEZlbGRtYW4gPHBhdmVsLmZlbGRtYW5AZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3
b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRX
aXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVkLCBt
b2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAg
ICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5hZGRMb2NhbFJlc291cmNlT3ZlcnJpZGUpOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlbW92ZUxvY2FsUmVzb3VyY2VPdmVycmlkZSk6
CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVk
KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXNwb25zZUludGVyY2Vw
dGVkKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlUmVzb3Vy
Y2VPdmVycmlkZURpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5OZXR3b3JrT2JzZXJ2ZXIucHJv
dG90eXBlLnJlcXVlc3RJbnRlcmNlcHRlZCk6CisKIDIwMjAtMDYtMTAgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRleHQgaW5wdXRz
IHNob3VsZCBub3Qgc3BlbGxjaGVjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlN2Y4NDlkNmY4ODczYjA3NjFiZDg1
YjRjMDM2NTZhOTkwYWE5NWNjLi5iY2RiNDZlM2FlOTIyZTMxYjQzMzBlZmJmY2EyNmQ5Y2YxZjk3
YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTAzICBQYXZlbCBGZWxkbWFu
ICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50
cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVz
dCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4g
SXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0Cisg
ICAgICAgIGNhbiBiZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0
YWdlIGVudW0gY2FuIG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2
YWx1ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKToK
KwogMjAyMC0wNi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIE1lZGlhVXNhZ2VNYW5hZ2VyQ29jb2Egc2hvdWxkIHVzZSBhIGRpZmZl
cmVudCBVU1ZpZGVvVXNhZ2UgaW5pdGlhbGl6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KaW5kZXggZjI0MjVkZDZhZmMw
ZWZiZjFkMTE1MjIwZmQ0MjQ2YWZlMmZiOTJlMS4uNjVhYjIwOTJiMGZmZDBlYWQzZGExZGRjY2Qz
OThkNGY0MTc5ZjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9OZXR3b3JrLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KQEAgLTE1NSw3ICsxNTUsMTMgQEAKICAgICAgICAg
ICAgICJpZCI6ICJOZXR3b3JrU3RhZ2UiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29y
ayByZXF1ZXN0LiIsCi0gICAgICAgICAgICAiZW51bSI6IFsicmVzcG9uc2UiXQorICAgICAgICAg
ICAgImVudW0iOiBbInJlcXVlc3QiLCAicmVzcG9uc2UiXQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAiaWQiOiAiUmVzb3VyY2VFcnJvclR5cGUiLAorICAgICAgICAgICAgInR5
cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3Rh
Z2VzIG9mIGEgbmV0d29yayByZXF1ZXN0LiIsCisgICAgICAgICAgICAiZW51bSI6IFsiR2VuZXJh
bCIsICJBY2Nlc3NDb250cm9sIiwgIkNhbmNlbGxhdGlvbiIsICJUaW1lb3V0Il0KICAgICAgICAg
fQogICAgIF0sCiAgICAgImNvbW1hbmRzIjogWwpAQCAtMjQ0LDEwICsyNTAsMTAgQEAKICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJBZGQgYW4gaW50ZXJjZXB0aW9uLiIsCiAgICAgICAgICAg
ICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlVSTCBwYXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcgaWYg
bm90IHNwZWNpZmllZCBvciBlbXB0eSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGlu
dGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBm
YWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1l
dGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBz
dGFnZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVh
dHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNTYsMTcgKzI2MiwyOSBAQAogICAgICAg
ICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdl
IiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5n
IG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Jl
Z2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9u
LiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29y
a1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50
IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVn
dWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7
CiAgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRDb250aW51ZSIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ29udGludWUgYW4gaW50ZXJjZXB0aW9uIHdpdGggbm8gbW9kaWZpY2F0
aW9ucy4iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIHJlcXVlc3Qgb3Ig
cmVzcG9uc2Ugd2l0aG91dCBtb2RpZmljYXRpb25zLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlw
ZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0
aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3Ig
cmVzcG9uc2UgdG8gY29udGludWUuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBm
b3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51
ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdv
cmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0byBjb250aW51ZS4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgaW50
ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRlZCBvbmUuIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRy
ZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRl
cmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFs
IjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0
cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdo
IG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEsIGJhc2U2NC1lbmNvZGVkLiIgfQog
ICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yODIsNiArMzAwLDI3IEBA
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVz
IHRleHQuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBh
c3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0KICAgICAgICAgICAg
IF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0
UmVxdWVzdFdpdGhSZXNwb25zZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvdmlk
ZSByZXNwb25zZSBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVxdWVzdC4gUmVxdWVzdCBjb21wbGV0ZWx5
IGJ5cGFzc2VzIHRoZSBuZXR3b3JrIGluIHRoaXMgY2FzZSBhbmQgaXMgaW1tZWRpYXRlbHkgZnVs
ZmlsbGVkIHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVx
dWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBO
ZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1
ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTUlN
RSBUeXBlIGZvciB0aGUgZGF0YS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0
dXMiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3Rh
dHVzIGNvZGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0
LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFk
ZXJzIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0UmVxdWVzdFdpdGhFcnJvciIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmFpbCBy
ZXF1ZXN0IHdpdGggZ2l2ZW4gZXJyb3IgdHlwZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1
ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5l
dHdvcmsgcmVxdWVzdCB0byBmYWlsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVy
cm9yVHlwZSIsICIkcmVmIjogIlJlc291cmNlRXJyb3JUeXBlIiwgImRlc2NyaXB0aW9uIjogIkRl
bGl2ZXIgZXJyb3IgcmVhc29uIGZvciB0aGUgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAgICAgICAg
ICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpAQCAtMzU3LDkgKzM5Niwx
NyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNo
ZWRSZXNvdXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAg
ICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
cmVxdWVzdEludGVyY2VwdGVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3
aGVuIEhUVFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3Qg
cmVzcG9uZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+LCA8Y29k
ZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9jb2RlPmAgb3IgPGNvZGU+TmV0d29yay5p
bnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byByZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAor
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxp
ZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVmIjogIlJlcXVlc3QiLCAiZGVzY3JpcHRp
b24iOiAiT3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlz
IGlzIGNvbnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewog
ICAgICAgICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRlcmNlcHRlZCIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2Vw
dGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJj
ZXB0Q29udGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8
L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29u
dGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2Rl
PmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVz
IjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRz
IHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4i
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IGVkNzYzYzExZWI5NTY0NmY2M2VjZjhkZGE3MDhhYjg4NDE0ZjMy
OTAuLjZjYjU5ZWNlZWE0ZWIyZTgxNjVlOTU5NjQ0ODM3NjY1NjExZmE5MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC04MTEsMTAgKzgxMSwxNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhYwogICAgIH0KIH0K
IAotYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
dGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKLSAgICAgICAg
cmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CisgICAg
ICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50
ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmIChhdXRvKiBuZXR3
b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKKyAg
ICAgICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNSw2ICs4MzIsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAo
YXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0Fn
ZW50KCkpCisgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdU
Rk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3Jr
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBjN2I2NmJhMTE1NWQ5MWIzYzVlMGUzMTJlMTRiZDJmZTczMjg2ZDI1Li5kZjkzOTA1YjQ1
YmFlNGM3NGE3MWQxZWFlODljMTI1ZTAxODNhMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKQEAgLTIzNCw4ICsyMzUsMTAg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4pOwpAQCAtNDQyLDggKzQ0NSwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3Vy
Y2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wg
d2lsbEludGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
Jiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTEyNTcs
MTEgKzEyNjIsMTkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJgogICAgIHdpbGxEZXN0cm95Q2Fj
aGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxJbnRlcmNl
cHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgICAgIHJl
dHVybiB3aWxsSW50ZXJjZXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0
dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1
ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyNzMsNiArMTI4NiwxMyBAQCBpbmxp
bmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVy
JiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KCpsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOwor
ICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckZyYW1lKGxvYWRlci5mcmFtZSgpKSkKKyAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXggOTU0YWFmMTIxYTlmYTUwN2Q4
M2JjMTBhZTM3ZGUxZjEyOGY3ZGNmYy4uZTM4ZWYzOThlN2U5YWZjMWUwMWE1NGI5Y2U2OGZjMjM1
OThlOTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMwLDExICszMCwyMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChmcmFtZSwgcmVxdWVzdCk7Cit9CisK
IGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmIGhhbmRsZXIpCit7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNl
cHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50
aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGI2N2U4OWI4
MGI0ZTdhODU4NmNhYzgxYWRlNWQ1OGExYmNiMGQ0MzEuLmEzMmY4NzdlYWEwNGYyN2QxMjEyNzBj
ZmY1YWNjM2IwMzJjMWM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDE0ICszNiwyNyBA
QCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKK2lubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoKmZyYW1lLCByZXF1ZXN0KTsKK30KKwogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSog
ZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CkBAIC01Myw2ICs2NiwxMiBAQCBpbmxpbmUgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lKgogICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KCpmcmFtZSwgcmVzcG9uc2UpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQor
eworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVy
Y2VwdFJlcXVlc3QobG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAg
IEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDJjZjQ5ODhm
MTMyMjJiZTU0MThiMGEyMzExNmI4ZGM5NmIxZjgzZjcuLmQxZGU1Mzk2ZTQ3ZmIyYzU3ZTQwNThj
ZGY3MGY3NDA3YWI4MGEzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SFRUUEhlYWRlck1hcC5oIgpAQCAtNDY1LDYgKzQ2Niw3IEBAIHN0YXRpYyBJbnNwZWN0b3JQYWdl
QWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvCiB7CiAgICAgaWYgKHJlc291cmNlKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFn
ZW50OjppbnNwZWN0b3JSZXNvdXJjZVR5cGUoKnJlc291cmNlKTsKKwogICAgIHJldHVybiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CiB9CiAKQEAgLTg0MCwxMiArODQyLDEzIEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBt
X3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAgICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFy
KCk7CiAKKyAgICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIGNvbnRpbnVlUGVuZGlu
Z1Jlc3BvbnNlcygpOwogCiAgICAgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoZmFsc2UpOwog
fQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwp
Citib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwsIE5l
dHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UpCiB7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwogCkBAIC04NTQsNiArODU3LDExIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Zm9yIChhdXRvJiBpbnRlcmNlcHQgOiBtX2ludGVyY2VwdHMpIHsKKyAgICAgICAgaWYgKGludGVy
Y2VwdC5uZXR3b3JrU3RhZ2UgIT0gbmV0d29ya1N0YWdlKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChpbnRlcmNlcHQudXJsLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCiAgICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9IGludGVyY2VwdC5pc1Jl
Z2V4ID8gQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6UmVnZXggOiBD
b250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpFeGFjdFN0cmluZzsKICAg
ICAgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVJlZ3VsYXJF
eHByZXNzaW9uRm9yU2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGludGVyY2VwdC5jYXNlU2Vu
c2l0aXZlLCBzZWFyY2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJlZ2V4Lm1hdGNoKHVybFN0
cmluZykgIT0gLTEpCkBAIC04NjMsNiArODcxLDEzIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpCit7Cisg
ICAgZm9yIChhdXRvJiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3Rz
LnZhbHVlcygpKQorICAgICAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxS
ZXF1ZXN0KCk7CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7
CiAgICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRl
cmNlcHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI4LDE4ICsxMDQzLDE4IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwog
Ci0gICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlv
bkVuYWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAg
Y29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykK
K3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3Rh
Z2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
b3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAg
ICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3
b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93
biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7
CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3Ry
aW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNDgs
MjEgKzEwNjMsMTggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlv
bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICAgICAgaW50ZXJjZXB0
LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25h
bElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsK
LQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRl
cmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1f
aW50ZXJjZXB0cy5hcHBlbmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCi0gICAgICAgIGVycm9y
U3RyaW5nID0gIkludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVh
ZHkgZXhpc3RzIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcmNlcHQgZm9yIGdpdmVu
IHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIGFscmVhZHkgZXhpc3RzIl9zOwog
fQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJp
bmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1v
dmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChu
ZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdl
U3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtT
dGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5l
dHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3Jr
U3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9z
LCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50
ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNzEsMTkgKzEwODMsMjcgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFMKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5p
c1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVy
Y2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRlcmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0
YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5yZW1vdmVBbGwoaW50ZXJjZXB0
KSkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpbnRlcmNlcHQgZm9yIGdpdmVuIHVy
bCBhbmQgZ2l2ZW4gaXNSZWdleCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBp
bnRlcmNlcHQgZm9yIGdpdmVuIHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIl9z
OworfQorCitib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJs
ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHQo
cmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KQorICAgICAgICB8fCBzaG91bGRJ
bnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25zZSk7CiB9CiAKLWJv
b2wgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxk
SW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAg
aWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHJldHVybiBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSk7CisgICAgcmV0dXJuIHNob3Vs
ZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpOwogfQogCiBi
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkxLDcgKzExMTEsMjEgQEAgYm9vbCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51
cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSwgTmV0d29y
a1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9l
bmFibGVkKTsKKyAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKKworICAgIFN0cmlu
ZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChsb2FkZXIuaWRlbnRp
ZmllcigpKTsKKyAgICBpZiAobV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY29udGFpbnMocmVx
dWVzdElkKSkgeworICAgICAgICBoYW5kbGVyKGxvYWRlci5yZXF1ZXN0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNldChyZXF1ZXN0
SWQsIG1ha2VVbmlxdWU8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+KCZsb2FkZXIsIFdURk1vdmUo
aGFuZGxlcikpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVk
KHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3Qo
KSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCkBAIC0xMTExLDE1ICsxMTQ1LDY1IEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VJbnRl
cmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25z
ZSwgbnVsbHB0cikpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IG5ldHdvcmtTdGFnZVN0cmluZykKIHsKLSAgICBhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7Ci0gICAgaWYg
KCFwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVs
cGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtT
dGFnZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29y
a1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNw
b25zZSgpOworICAgIHN3aXRjaCAobmV0d29ya1N0YWdlLnZhbHVlKCkpIHsKKyAgICBjYXNlIE5l
dHdvcmtTdGFnZTo6UmVxdWVzdDoKKyAgICAgICAgaWYgKGF1dG8gcGVuZGluZ0ludGVyY2VwdFJl
cXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCkpCisgICAg
ICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxSZXF1
ZXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
cGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlOgorICAgICAgICBpZiAo
YXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZXMudGFrZShyZXF1ZXN0SWQpKQorICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
LT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3Ig
Z2l2ZW4gcmVxdWVzdElkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
V2l0aFJlcXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBKU09O
OjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBw
ZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElk
KTsKKyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgbG9hZGVyID0gKnBlbmRpbmdSZXF1
ZXN0LT5tX2xvYWRlcjsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGxvYWRlci5yZXF1
ZXN0KCk7CisgICAgaWYgKHVybCkKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgKnVy
bCkpOworICAgIGlmIChtZXRob2QpCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgqbWV0
aG9kKTsKKyAgICBpZiAoaGVhZGVycykgeworICAgICAgICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0
SGVhZGVyczsKKyAgICAgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiAqaGVhZGVycykgewor
ICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICAgICAgaWYgKHZhbHVlLT5h
c1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICAgICAgZXhwbGljaXRIZWFkZXJzLmFk
ZChrZXksIGhlYWRlclZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXF1ZXN0LnNldEhUVFBI
ZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKKyAgICB9CisgICAgaWYgKHBv
c3REYXRhKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgICAgIGlmICgh
YmFzZTY0RGVjb2RlKCpwb3N0RGF0YSwgYnVmZmVyKSkgeworICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBwb3N0RGF0YSJfczsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6
OmNyZWF0ZShidWZmZXIpKTsKKyAgICB9CisgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgaG93IHRv
IGlkZW50aWZ5IHdoZW4gYSByZXF1ZXN0IGhhcyBiZWVuIG92ZXJyaWRkZW4gd2hlbiB3ZSBhZGQg
dGhpcyB0byB0aGUgZnJvbnRlbmQuCisgICAgcGVuZGluZ1JlcXVlc3QtPmNvbnRpbnVlV2l0aFJl
cXVlc3QocmVxdWVzdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0
IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1
c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycykKQEAgLTExNTgsNiArMTI0Miw3IEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVz
cG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisKICAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKICAgICB9IGVsc2UKICAgICAgICAgb3ZlcnJpZGVEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0Zjgo
KS5sZW5ndGgoKSk7CkBAIC0xMTY1LDYgKzEyNTAsOTQgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnMKICAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmQob3ZlcnJpZGVSZXNwb25z
ZSwgb3ZlcnJpZGVEYXRhKTsKIH0KIAordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVy
Y2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29k
ZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc3Rh
dHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0JiBoZWFkZXJzKQoreworICAgIGF1dG8gcGVuZGlu
Z1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7Cisg
ICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIExvYWRlciB3aWxsIGJlIHJldGFpbmVkIGluIHRo
ZSBkaWRSZWNlaXZlUmVzcG9uc2UgbGFtYmRhIGJlbG93LgorICAgIFJlZlB0cjxSZXNvdXJjZUxv
YWRlcj4gbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgIGlmIChs
b2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAi
VW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQi
X3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CisgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRlbnQsIGJ1ZmZlcikpIHsKKyAg
ICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gY29udGVudCJf
czsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50
LnV0ZjgoKS5sZW5ndGgoKSk7CisKKyAgICAvLyBNaW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9y
IC0gcmVwb3J0IGRpZFJlY2VpdmVSZXNwb25zZSAmIGRpZEZpbmlzaExvYWRpbmcuCisgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZShwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXItPnVybCgpLCBt
aW1lVHlwZSwgZGF0YS0+c2l6ZSgpLCBTdHJpbmcoKSk7CisgICAgcmVzcG9uc2Uuc2V0U291cmNl
KFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOworICAgIHJlc3Bv
bnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0YXR1cyk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1
c1RleHQoc3RhdHVzVGV4dCk7CisgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7Cisg
ICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiBoZWFkZXJzKSB7CisgICAgICAgIFN0cmluZyBo
ZWFkZXJWYWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisg
ICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRkKGtleSwgaGVhZGVyVmFsdWUpOworICAgIH0K
KyAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJz
KSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgbG9h
ZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCksIERh
dGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGlu
ZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlU3Ry
aW5nKQoreworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1
ZXN0cy50YWtlKHJlcXVlc3RJZCk7CisgICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAg
ICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdp
dmVuIHJlcXVlc3RJZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGxv
YWRlciA9ICpwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXI7CisgICAgaWYgKGxvYWRlci5yZWFjaGVk
VGVybWluYWxTdGF0ZSgpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBhYm9y
dCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlPihlcnJvclR5cGVTdHJpbmcpOworICAg
IGlmICghZXJyb3JUeXBlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5r
bm93biBlcnJvclR5cGU6ICJfcywgZXJyb3JUeXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgc3dpdGNoIChlcnJvclR5cGUu
dmFsdWUoKSkgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3Vy
Y2VFcnJvclR5cGU6OkdlbmVyYWw6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXIudXJsKCksICJSZXF1ZXN0IGludGVyY2Vw
dGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6
QWNjZXNzQ29udHJvbDoKKyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci51cmwoKSwgIkFjY2VzcyBkZW5pZWQiX3MsIFJlc291
cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpDYW5jZWxs
YXRpb246CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCBsb2FkZXIudXJsKCksICJSZXF1ZXN0IGNhbmNlbGVkIl9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0OgorICAg
ICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
bG9hZGVyLnVybCgpLCAiUmVxdWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6
OlRpbWVvdXQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBlcnJvciA9
IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbG9hZGVyLnVybCgp
LCAiUmVxdWVzdCBpbnRlcmNlcHRlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBsb2FkZXIuZGlkRmFpbChlcnJvcik7Cit9CisK
IGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQogewogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1pbWVUeXBlLCAidGV4dC8iKQpAQCAtMTE4MSw2ICsxMzU0LDcgQEAgUmVmPFRleHRS
ZXNvdXJjZURlY29kZXI+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIo
Y29uc3QgU3RyaW5nJgogCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBl
KG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSht
aW1lVHlwZSwgIlVURi04Iik7CisKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1F
VHlwZShtaW1lVHlwZSkpIHsKICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiX3MpOwogICAgICAgICBkZWNvZGVyLT51c2VM
ZW5pZW50WE1MRGVjb2RpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IGJmZDEzMWU5YjU4NTZjODRk
YTc3MjQ4MDVlNzEzOTdiN2M3NDg2YTkuLjAzYjRjYmE0NTIwMWE1ZGYwM2RkNmYyOGQ4ZmYzMDU2
NjE0NjYwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtODgsMTAgKzg4LDEzIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBTdHJpbmcqIHNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZSkgZmluYWw7CiAgICAg
dm9pZCByZXNvbHZlV2ViU29ja2V0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JikgZmluYWw7CiAgICAgdm9pZCBzZXRJbnRlcmNlcHRp
b25FbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSBmaW5hbDsKLSAgICB2b2lkIGFk
ZEludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBib29s
KiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdv
cmtTdGFnZVN0cmluZykgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVJbnRlcmNlcHRpb24oRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29u
c3QgYm9vbCogaXNSZWdleCwgY29uc3QgU3RyaW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFs
OwotICAgIHZvaWQgaW50ZXJjZXB0Q29udGludWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCkgZmluYWw7CisgICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNv
bnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgpIGZpbmFsOworICAg
IHZvaWQgcmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdlU3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdENvbnRp
bnVlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYg
bmV0d29ya1N0YWdlU3RyaW5nKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFdpdGhSZXF1ZXN0
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyogdXJs
LCBjb25zdCBTdHJpbmcqIG1ldGhvZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcqIHBvc3REYXRhKSBmaW5hbDsKICAgICB2b2lkIGludGVyY2VwdFdpdGhSZXNwb25z
ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgY29uc3QgU3RyaW5nKiBtaW1lVHlwZSwgY29uc3Qg
aW50KiBzdGF0dXMsIGNvbnN0IFN0cmluZyogc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0
KiBoZWFkZXJzKSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2Uo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGludCBzdGF0
dXMsIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0JiBoZWFkZXJz
KSBmaW5hbDsKKyAgICB2b2lkIGludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpIGZpbmFs
OwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCB3aWxsUmVjYWxj
dWxhdGVTdHlsZSgpOwpAQCAtMTE4LDkgKzEyMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWlu
RnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXImKTsKICAgICB2b2lkIHNldEluaXRpYWxTY3Jp
cHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcpOwogICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQm
KTsKLSAgICBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OworICAgIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBi
b29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQgaW50ZXJjZXB0
UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0
IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwogICAgIHZvaWQgc2VhcmNo
SW5SZXF1ZXN0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4LCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNo
Pj4mKTsKQEAgLTE0MCw3ICsxNDUsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0
KFVSTCk7CisgICAgdXNpbmcgTmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0
d29yazo6TmV0d29ya1N0YWdlOworICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0KFVSTCwgTmV0d29y
a1N0YWdlKTsKKyAgICB2b2lkIGNvbnRpbnVlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBj
b250aW51ZVBlbmRpbmdSZXNwb25zZXMoKTsKIAogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9y
UmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKQEAgLTE1Myw2ICsxNjAsMzEgQEAg
cHJpdmF0ZToKIAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAorICAgIGNsYXNzIFBlbmRpbmdJ
bnRlcmNlcHRSZXF1ZXN0IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0lu
dGVyY2VwdFJlcXVlc3QpOworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBw
dWJsaWM6CisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KFJlZlB0cjxSZXNvdXJjZUxv
YWRlcj4gbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgOiBtX2xvYWRlcihsb2FkZXIp
CisgICAgICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCisgICAgICAgIHsgfQorCisgICAgICAgIHZvaWQgY29udGludWVXaXRoT3JpZ2luYWxS
ZXF1ZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2xvYWRlci0+cmVhY2hlZFRl
cm1pbmFsU3RhdGUoKSkKKyAgICAgICAgICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKG1fbG9h
ZGVyLT5yZXF1ZXN0KCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb250aW51ZVdpdGhS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihyZXF1ZXN0KTsKKyAgICAgICAgfQorCisgICAgICAg
IFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KCkgPSBkZWZhdWx0OworICAgICAgICBSZWZQdHI8UmVz
b3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIH07CisKICAg
ICBjbGFzcyBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgewogICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTIwNCwxNSArMjM2LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cmlu
ZyB1cmw7CiAgICAgICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSB7IHRydWUgfTsKICAgICAgICAgYm9v
bCBpc1JlZ2V4IHsgZmFsc2UgfTsKKyAgICAgICAgTmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSB7
IE5ldHdvcmtTdGFnZTo6UmVzcG9uc2UgfTsKIAogICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEludGVyY2VwdCYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiB1cmwgPT0gb3RoZXIudXJsCiAgICAgICAgICAgICAgICAgJiYgY2FzZVNlbnNpdGl2
ZSA9PSBvdGhlci5jYXNlU2Vuc2l0aXZlCi0gICAgICAgICAgICAgICAgJiYgaXNSZWdleCA9PSBv
dGhlci5pc1JlZ2V4OworICAgICAgICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdl
eAorICAgICAgICAgICAgICAgICYmIG5ldHdvcmtTdGFnZSA9PSBvdGhlci5uZXR3b3JrU3RhZ2U7
CiAgICAgICAgIH0KICAgICB9OwogICAgIFZlY3RvcjxJbnRlcmNlcHQ+IG1faW50ZXJjZXB0czsK
KyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNlcHRSZXF1
ZXN0Pj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0
ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2U+PiBtX3BlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZXM7CiAKICAgICAvLyBGSVhNRTogSW5zcGVjdG9yTmV0d29ya0FnZW50IHNob3Vs
ZCBub3QgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDc4NzNi
Zjk5YmQyMzQ5NjY0OGNiYzM0NDcwNDg4MTgyMTU4OTRjODEuLjNhNzExMjc3YThhYTdjNGYwMzU5
MGMyZmU1NzgzYTI0YWY4MmE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtODQxLDcgKzg0MSw3IEBAIFJlc291
cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1CiAKICAgICByZXF1ZXN0LnVwZGF0ZVJlZmVycmVyUG9saWN5KGRv
Y3VtZW50KCkgPyBkb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpIDogUmVmZXJyZXJQb2xpY3k6
Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsKIAotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KCZmcmFtZSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKSkpCisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdCgm
ZnJhbWUsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQogICAgICAgICByZXF1ZXN0LnNldENh
Y2hpbmdQb2xpY3koQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKTsKIAogICAgIGF1dG8m
IHBhZ2UgPSAqZnJhbWUucGFnZSgpOwpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgVmVjdG9yPFJlZjxT
VkdJbWFnZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjphbGxDYWNoZWRTVkdJbWFnZXMoKSBjb25z
dAogCiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBl
LCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIGlmIChJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGZyYW1lKCksIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJ
bnRlcmNlcHQoZnJhbWUoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpCiAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgIkluc3BlY3RvciBpbnRl
cmNlcHQiX3MgfSk7CiAKICAgICBpZiAocmVxdWVzdC5jaGFyc2V0KCkuaXNFbXB0eSgpICYmICh0
eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNv
dXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2Vy
LmpzCmluZGV4IDdkZTNjZDI1MzlmYzNlNmY4YjY2OTcyNDNhMzc4OTU3YTU1MmE1NDUuLmEzMzg3
MzQ0N2M5MGVjNjQzYmVlMzMzMTViM2M5MmFkMWZiZmJjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05l
dHdvcmtNYW5hZ2VyLmpzCkBAIC0xNTksOSArMTU5LDkgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBj
bGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWxvY2FsUmVzb3VyY2VPdmVycmlkZS5kaXNhYmxlZCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51
bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVy
cmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtTdGFnZTog
SW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CkBAIC0zNjQsNyArMzY0LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBO
ZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDogbG9j
YWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBs
b2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAgIGlz
UmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAgIG5l
dHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJl
c3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0
d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAg
ICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5ldHdvcmsuYWRkSW50ZXJjZXB0aW9uIGRp
ZCBub3QgZXhpc3QuCkBAIC0zOTcsNyArMzk3LDcgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFz
cyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHVybDog
bG9jYWxSZXNvdXJjZU92ZXJyaWRlLnVybCwKICAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZl
OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgICAg
IGlzUmVnZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgICAg
IG5ldHdvcmtTdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdl
LlJlc3BvbnNlLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0u
TmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICB9OwogCiAgICAgICAg
ICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0
aW9uIGRpZCBub3QgZXhpc3QuCkBAIC05MDgsMTIgKzkwOCwyMSBAQCBXSS5OZXR3b3JrTWFuYWdl
ciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMu
X3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZGVsZXRlKHJlcXVlc3RJZGVudGlmaWVyKTsK
ICAgICB9CiAKKyAgICByZXF1ZXN0SW50ZXJjZXB0ZWQodGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVl
c3QpCisgICAgeworICAgICAgICAvLyBGSVhNRTogYWRkIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHN1
cHBvcnQgdG8gdGhlIGZyb250ZW5kLgorICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIHt0YXJnZXQs
IHJlcXVlc3RJZCwgcmVxdWVzdH0pOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQo
dGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbGV0IHVybCA9IFdJ
LnVybFdpdGhvdXRGcmFnbWVudChyZXNwb25zZS51cmwpOwogICAgICAgICBsZXQgbG9jYWxSZXNv
dXJjZU92ZXJyaWRlID0gdGhpcy5sb2NhbFJlc291cmNlT3ZlcnJpZGVGb3JVUkwodXJsKTsKICAg
ICAgICAgaWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUgfHwgbG9jYWxSZXNvdXJjZU92ZXJyaWRl
LmRpc2FibGVkKSB7Ci0gICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVyY2VwdENv
bnRpbnVlKHJlcXVlc3RJZCk7CisgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LmludGVy
Y2VwdENvbnRpbnVlLmludm9rZSh7CisgICAgICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAg
ICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3Rh
Z2UuUmVzcG9uc2UsCisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0xMzc2LDcgKzEzODUsNyBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5l
dHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB1cmw6IGxvY2FsUmVz
b3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBsb2NhbFJlc291
cmNlT3ZlcnJpZGUuaXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICAgICAgaXNSZWdleDogbG9jYWxS
ZXNvdXJjZU92ZXJyaWRlLmlzUmVnZXgsCi0gICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3Bl
Y3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAg
ICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVz
cG9uc2UsCiAgICAgICAgIH07CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjAp
OiBOZXR3b3JrLmFkZEludGVyY2VwdGlvbiAvIE5ldHdvcmsucmVtb3ZlSW50ZXJjZXB0aW9uIGRp
ZCBub3QgZXhpc3QuCkBAIC0xNDMyLDQgKzE0NDEsNSBAQCBXSS5OZXR3b3JrTWFuYWdlci5FdmVu
dCA9IHsKICAgICBCb290c3RyYXBTY3JpcHREZXN0cm95ZWQ6ICJuZXR3b3JrLW1hbmFnZXItYm9v
dHN0cmFwLXNjcmlwdC1kZXN0cm95ZWQiLAogICAgIExvY2FsUmVzb3VyY2VPdmVycmlkZUFkZGVk
OiAibmV0d29yay1tYW5hZ2VyLWxvY2FsLXJlc291cmNlLW92ZXJyaWRlLWFkZGVkIiwKICAgICBM
b2NhbFJlc291cmNlT3ZlcnJpZGVSZW1vdmVkOiAibmV0d29yay1tYW5hZ2VyLWxvY2FsLXJlc291
cmNlLW92ZXJyaWRlLXJlbW92ZWQiLAorICAgIFJlcXVlc3RJbnRlcmNlcHRlZDogIm5ldHdvcmst
bWFuYWdlci1yZXF1ZXN0LWludGVyY2VwdGVkIgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZl
ci5qcwppbmRleCA1OWMyOWM5YTM4NGIwNDc4ZGQ4ZDZkMGNmNTkyOGI2Mjk4MTgwMGFhLi5mZTg4
MjlhNzFiZmQwZWVkODU2YjQxYzNhYWVjZTZhZTdmMWExNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29y
a09ic2VydmVyLmpzCkBAIC0xMDgsNiArMTA4LDExIEBAIFdJLk5ldHdvcmtPYnNlcnZlciA9IGNs
YXNzIE5ldHdvcmtPYnNlcnZlciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlzcGF0Y2hlcgog
ICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogICAgIH0KIAorICAgIHJlcXVlc3RJ
bnRlcmNlcHRlZChyZXF1ZXN0SWQsIHJlcXVlc3QpCisgICAgeworICAgICAgICBXSS5uZXR3b3Jr
TWFuYWdlci5yZXF1ZXN0SW50ZXJjZXB0ZWQodGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVl
c3QpOworICAgIH0KKwogICAgIHJlc3BvbnNlSW50ZXJjZXB0ZWQocmVxdWVzdElkLCByZXNwb25z
ZSkKICAgICB7CiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlc3BvbnNlSW50ZXJjZXB0ZWQo
dGhpcy5fdGFyZ2V0LCByZXF1ZXN0SWQsIHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwZGRi
MzUzMzQ0Mzg3ODRmYjIxNmZkZjcxMDg0Mjk3MjZmMmM2NjY3Li5mYWExZTE2MGY3NDhjYjJlMzVj
MGQ2N2QwMTc2OWJhZTM4MmNmODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya0xvYWRJbmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVn
aWVzLmg+CkBAIC0yMjgsNiArMjI5LDEzIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAg
ICBpZiAoIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIsIHRy
YWNraW5nUGFyYW1ldGVycykpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0
aGUgTmV0d29ya1Byb2Nlc3MiKTsKKworICAgICAgICBpZiAoIXJlc291cmNlTG9hZGVyLm9wdGlv
bnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciAmJiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QocmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpKSkgeworICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9hZGVy
LCBbdGhpcywgcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmUHRyKCZyZXNvdXJjZUxv
YWRlciksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgcmVzb3VyY2VdKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgewor
ICAgICAgICAgICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcygqcHJvdGVjdGVk
UmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3Vy
Y2UpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAg
ICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTBkNDE1YWMzMmU4NzI0YmRkZTRm
NGY1NzFlMWJjY2NlYjhlZmIzYi4uNjFjZTk0NDk4NTZmMWExNDQ5MTE0NWQ0YWM2M2RjMzI2MzJl
YWMwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTA2LTAzICBQYXZlbCBGZWxkbWFuIDxw
YXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1
Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgbmV0d29yayByZXF1ZXN0IGlu
dGVyY2VwdGlvbiB0byB0aGUgTmV0d29yaworICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFk
ZHMgTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAg
ICBjYW4gYmUgY29udGludWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBl
bnVtIGNhbiBub3cgaGF2ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVz
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJv
cnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
Y29udGludWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJh
Z21lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1y
ZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1tYWluLXJlc291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1y
ZXNwb25zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHA6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1zY3JpcHQuanM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3
b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJjZXB0ZWQuanNvbjog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDIwLTA2LTExICBPcmlvbCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAgICAg
W2Nzcy1ncmlkXSBSZWltcG9ydCBXUFQgdGVzdHMgcmVtb3ZlZCBpbiByMjYyODA5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1h
Ym9ydGVkLXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMWQzOGI4NzFkNTE2NjA2Y2MxNjU4MDdhNWJiZDM2ZTAwNjViMjQyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitDT05T
T0xFIE1FU1NBR0U6IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogQWJvcnRFcnJvcjogRmV0
Y2ggaXMgYWJvcnRlZAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rp
b246IEFib3J0RXJyb3I6IEZldGNoIGlzIGFib3J0ZWQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRp
b24gb2YgdGhlIGFib3J0ZWQgcmVxdWVzdC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6
IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5BYm9ydGVkCitUcmlnZ2VyaW5n
IGxvYWQuLi4KK1BBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbi4KK0Vycm9yOiBVbmFi
bGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZAorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yLkFi
b3J0ZWQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0
aW9uLgorRXJyb3I6IFVuYWJsZSB0byBhYm9ydCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVu
IHByb2Nlc3NlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA0ZGYzYjI5NDkwM2VlNmI0MWE5NTU5YmZhMmFhY2Q5NzljNGViZjYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QuaHRtbApAQCAtMCwwICsxLDc3IEBACisKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKworYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbmRBYm9ydCgpIHsKKyAgICBsZXQgdXJsID0gImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUu
dHh0IjsKKyAgICBsZXQgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTsKKyAgICBs
ZXQgeyBzaWduYWwgfSA9IGNvbnRyb2xsZXI7CisgICAgZmV0Y2godXJsLCB7IHNpZ25hbCB9KTsK
KyAgICBjb250cm9sbGVyLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxl
dCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlIik7CisKKyAgICBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0
aW9uLmludm9rZSh7CisgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0IiwKKyAgICAgICAgc3RhZ2U6IEluc3Bl
Y3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgIH0pOwor
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkFib3J0ZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRl
c3RzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQgZnVsZmlsbHMgYWJvcnRlZCByZXF1ZXN0IiwK
KyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJU
cmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVk
RXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2Vw
dGVkKSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBmZXRj
aEFuZEFib3J0KClgKSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAg
YXdhaXQgTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudC5k
YXRhLnJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tl
bmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgICAgICAg
ICBjb250ZW50OiAiRkFJTCIsCisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZh
bHNlLAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZTogInRleHQvcGxhaW4iLAorICAgICAg
ICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4
dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0
aEVycm9yLkFib3J0ZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaW50
ZXJjZXB0aW9uIHRoYXQgcmVqZWN0cyBhYm9ydGVkIHJlcXVlc3QiLAorICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4u
LiIpOworICAgICAgICAgICAgbGV0IFtyZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQ
cm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYXdhaXRFdmVu
dChXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQpLAorICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGZldGNoQW5kQWJvcnQoKWApLAor
ICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXhwZWN0
RXhjZXB0aW9uKGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdl
bnQuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvci5pbnZva2UoeworICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAg
ICAgICAgICAgICAgICAgICBlcnJvclR5cGU6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3Jr
LlJlc291cmNlRXJyb3JUeXBlLkdlbmVyYWwsCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5k
RmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gb2YgdGhlIGFib3J0ZWQgcmVxdWVzdC48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3QtY29udGludWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjMjc0YzU2NjI2NTIxNTYw
MzBhMmRhNmNhOGMzZDM5ZjQ0Zjc5MjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRo
YXQgY29udGludWVzIHJlcXVlc3QuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3Jr
LmludGVyY2VwdENvbnRpbnVlCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0LkNvbnRpbnVlCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGNvbnRlbnQ6
CitmdW5jdGlvbiBteVNjcmlwdEpTKCkge30KKworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlV3JvbmdTdGFnZQorVHJpZ2dlcmluZyBsb2Fk
Li4uCitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCitFcnJvcjogTWlzc2luZyBw
ZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWVXcm9uZ0lkCitU
cmlnZ2VyaW5nIGxvYWQuLi4KK1BBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbi4KK0Vy
cm9yOiBNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJ
ZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTg5NGM0OTQ5NDkxMmU5NzFmNzc0OGI4ZWJkMGQ0NDZhMGY5ZmZhMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtY29udGludWUuaHRtbApAQCAtMCwwICsxLDg5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cithc3lu
YyBmdW5jdGlvbiBmZXRjaERhdGEodXJsKQoreworICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZl
dGNoKHVybCk7CisgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLnRleHQoKTsKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1
aXRlKCJOZXR3b3JrLmludGVyY2VwdENvbnRpbnVlIik7CisgICAgCisgICAgTmV0d29ya0FnZW50
LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NjcmlwdC5qcyIsCisgICAgICAgIHN0
YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwK
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVz
dHMgcmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCBjb250aW51ZXMiLAorICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IGludGVyY2VwdENvbnRpbnVlID0gKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICAgICAgbGV0IHsgdGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3QgfSA9IGV2
ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdENvbnRpbnVl
Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAg
ICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5S
ZXF1ZXN0LAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5F
dmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdENvbnRpbnVlKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgIGxl
dCByZXNwb25zZSA9IGF3YWl0IFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZmV0Y2hEYXRhKCdyZXNv
dXJjZXMvc2NyaXB0LmpzJykiKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgUnVudGlt
ZUFnZW50LmF3YWl0UHJvbWlzZShyZXNwb25zZS5yZXN1bHQub2JqZWN0SWQsIHRydWUpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlc3BvbnNlIGNvbnRlbnQ6Iik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhyZXNwb25zZS5yZXN1bHQudmFsdWUpOworICAgICAgICAg
ICAgV0kubmV0d29ya01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdl
ci5FdmVudC5SZXF1ZXN0SW50ZXJjZXB0ZWQsIGludGVyY2VwdENvbnRpbnVlKTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVlV3JvbmdTdGFnZSIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCBjb250aW51ZXMgd2l0aCB0
aGUgd3Jvbmcgc3RhZ2UiLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgbGV0IFty
ZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAg
ICAgICAgV0kubmV0d29ya01hbmFnZXIuYXdhaXRFdmVudChXSS5OZXR3b3JrTWFuYWdlci5FdmVu
dC5SZXF1ZXN0SW50ZXJjZXB0ZWQpLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoYGZldGNoRGF0YSgncmVzb3VyY2VzL3NjcmlwdC5qcycpYCksCisgICAgICAg
ICAgICBdKTsKKworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5leHBlY3RFeGNlcHRp
b24oYXN5bmMgKCkgPT4geworICAgICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRl
cmNlcHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJl
cXVlc3RJbnRlcmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAg
ICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3Bv
bnNlLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZVdyb25nSWQiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlRlc3RzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQgY29udGludWVzIHdpdGggdGhlIHdyb25n
IHN0YWdlIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgIGxldCBbcmVxdWVzdElu
dGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIFdJ
Lm5ldHdvcmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVz
dEludGVyY2VwdGVkKSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Q
YWdlKGBmZXRjaERhdGEoJ3Jlc291cmNlcy9zY3JpcHQuanMnKWApLAorICAgICAgICAgICAgXSk7
CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uKGFzeW5j
ICgpID0+IHsKKyAgICAgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0Q29u
dGludWUuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiAid3JvbmdJZCIs
CisgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29y
ay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5p
c2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
PHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyByZXF1ZXN0LjwvcD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVz
dC1mcmFnbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYxYjA4ZDk2MWRlYjk3MTlkODBm
Yjk3MmE2N2Y1ZWUzMDAzZTI0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gaW4gY29t
YmluYXRpb24gd2l0aCBmcmFnbWVudHMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3
b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0LlVSTFdpdGhvdXRGcmFnbWVudEJhc2VsaW5lCitUcmlnZ2VyaW5nIGxv
YWQuLi4KK1JlcXVlc3QgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1zb3VyY2VtYXAuY3NzP29uZQorUmVzcG9uc2Ug
VVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0
eWxlc2hlZXQtd2l0aC1zb3VyY2VtYXAuY3NzP29uZQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
TmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTFdpdGhGcmFnbWVudEJhc2VsaW5lCitUcmlnZ2Vy
aW5nIGxvYWQuLi4KK1JlcXVlc3QgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1zb3VyY2VtYXAuY3NzP3R3byNmcmFn
bWVudAorUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1zb3VyY2VtYXAuY3NzP3R3byNmcmFnbWVudAor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTEFkZEZy
YWdtZW50CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgVVJMOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzCitSZXNwb25z
ZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
c3R5bGVzaGVldC5jc3MjZnJhZ21lbnQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsu
aW50ZXJjZXB0UmVxdWVzdC5VUkxSZW1vdmVGcmFnbWVudAorVHJpZ2dlcmluZyBsb2FkLi4uCitS
ZXF1ZXN0IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9zdHlsZXNoZWV0LmNzcyNmcmFnbWVudAorUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtZnJhZ21lbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODBjMjdhN2QxMDI3NmJmYmZjMDExNmE3YzVkNjE0NGNhYWU2ZTEzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1mcmFnbWVudC5odG1sCkBAIC0wLDAgKzEsMTAwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IGxvYWRTdWJyZXNvdXJjZSh1cmwpCit7CisgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsaW5rIik7CisgICAgbGluay5yZWwgPSAic3R5bGVzaGVldCI7CisgICAgbGluay5o
cmVmID0gdXJsOworICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7Cit9CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5
bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCIpOworCisgICAgTmV0d29ya0Fn
ZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzIiwKKyAg
ICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5S
ZXF1ZXN0LAorICAgIH0pOworCisgICAgZnVuY3Rpb24gYWRkQmFzZWxpbmVUZXN0Q2FzZSh7bmFt
ZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Npb259KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRy
aWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbcmVxdWVzdEV2ZW50LCBy
ZXNwb25zZUV2ZW50LCBmZXRjaFJlc3BvbnNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgICAgICAgICAgV0kuRnJhbWUuYXdhaXRFdmVudChXSS5GcmFtZS5FdmVudC5SZXNvdXJj
ZVdhc0FkZGVkKSwKKyAgICAgICAgICAgICAgICAgICAgV0kuUmVzb3VyY2UuYXdhaXRFdmVudChX
SS5SZXNvdXJjZS5FdmVudC5SZXNwb25zZVJlY2VpdmVkKSwKKyAgICAgICAgICAgICAgICAgICAg
UnVudGltZUFnZW50LmV2YWx1YXRlKGV4cHJlc3Npb24pLAorICAgICAgICAgICAgICAgIF0pOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0IFVSTDogIiArIHJlcXVl
c3RFdmVudC5kYXRhLnJlc291cmNlLnVybCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlJlc3BvbnNlIFVSTDogIiArIHJlc3BvbnNlRXZlbnQudGFyZ2V0LnVybCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKyAgICBmdW5jdGlvbiBhZGRUZXN0Q2FzZSh7
bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Npb24sIHVybH0pIHsKKyAgICAgICAgc3VpdGUuYWRk
VGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAor
ICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICAgICAgbGV0IFtyZXF1ZXN0
RXZlbnQsIHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50LCBmZXRjaFJlc3BvbnNlXSA9IGF3YWl0IFBy
b21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICAgICAgV0kuRnJhbWUuYXdhaXRFdmVudChXSS5G
cmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkKSwKKyAgICAgICAgICAgICAgICAgICAgV0kubmV0
d29ya01hbmFnZXIuYXdhaXRFdmVudChXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5SZXF1ZXN0SW50
ZXJjZXB0ZWQpLAorICAgICAgICAgICAgICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUoZXhw
cmVzc2lvbiksCisgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIlJlcXVlc3QgVVJMOiAiICsgcmVxdWVzdEV2ZW50LmRhdGEucmVzb3VyY2UudXJs
KTsKKworICAgICAgICAgICAgICAgIGxldCBbcmVzcG9uc2VFdmVudCwgaW50ZXJjZXB0UmVzcG9u
c2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBXSS5SZXNvdXJj
ZS5hd2FpdEV2ZW50KFdJLlJlc291cmNlLkV2ZW50LlJlc3BvbnNlUmVjZWl2ZWQpLAorICAgICAg
ICAgICAgICAgICAgICBOZXR3b3JrQWdlbnQuaW50ZXJjZXB0V2l0aFJlcXVlc3QuaW52b2tlKHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdEludGVyY2VwdGVkRXZl
bnQuZGF0YS5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisgICAgICAg
ICAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJSZXNwb25zZSBVUkw6ICIgKyByZXNwb25zZUV2ZW50LnRhcmdldC51
cmwpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKworICAgIGFkZEJhc2Vs
aW5lVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVS
TFdpdGhvdXRGcmFnbWVudEJhc2VsaW5lIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyBy
ZXNwb25zZSB1cmwgd2l0aG91dCBmcmFnbWVudCAtIGJhc2VsaW5lIiwKKyAgICAgICAgZXhwcmVz
c2lvbjogImxvYWRTdWJyZXNvdXJjZSgncmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1zb3VyY2Vt
YXAuY3NzP29uZScpIiwKKyAgICB9KTsKKworICAgIGFkZEJhc2VsaW5lVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTFdpdGhGcmFnbWVudEJhc2Vs
aW5lIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXNwb25zZSB1cmwgd2l0aCBmcmFn
bWVudCAtIGJhc2VsaW5lIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImxvYWRTdWJyZXNvdXJjZSgn
cmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1zb3VyY2VtYXAuY3NzP3R3byNmcmFnbWVudCcpIiwK
KyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50
ZXJjZXB0UmVxdWVzdC5VUkxBZGRGcmFnbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVz
dHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGggVVJMIHdpdGggZnJhZ21lbnQiLAor
ICAgICAgICBleHByZXNzaW9uOiAibG9hZFN1YnJlc291cmNlKCdyZXNvdXJjZXMvc3R5bGVzaGVl
dC5jc3MnKSIsCisgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MjZnJhZ21lbnQiLAorICAgIH0pOworCisg
ICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
LlVSTFJlbW92ZUZyYWdtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0
IG1ldGhvZCBpbnRlcmNlcHRpb24gdGhhdCByZW1vdmVzIGZyYWdtZW50IiwKKyAgICAgICAgZXhw
cmVzc2lvbjogImxvYWRTdWJyZXNvdXJjZSgncmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzI2ZyYWdt
ZW50JykiLAorICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzIiwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGluIGNvbWJpbmF0
aW9uIHdpdGggZnJhZ21lbnRzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
bWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQyMTI1OTA0ODM1ZWYxMGI2YzA2MDM0ZjYxNWYzZGVmMTE4ZjllYWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorQUxFUlQ6IE9SSUdJTkFMIEhUTUwgQ09OVEVOVAorQUxFUlQ6IFJFUExBQ0VEIEhUTUwg
Q09OVEVOVAorT3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNv
dXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJl
c3BvbnNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjEyNTkwNDgzNWVmMTBiNmMwNjAzNGY2
MTVmM2RlZjExOGY5ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgt
cmVzcG9uc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQUxFUlQ6IE9SSUdJTkFMIEhU
TUwgQ09OVEVOVAorQUxFUlQ6IFJFUExBQ0VEIEhUTUwgQ09OVEVOVAorT3ZlcnJpZGRlbiBwYWdl
IGNvbnRlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhMDEwZGVj
YWZlOTE0MmE3ZThkMmFmNzkyNTRhYThiMjYyMWQ3YzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1h
aW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRl
QXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlIik7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJl
cXVlc3QuTWFpblJlc291cmNlIHdpdGggcmVzcG9uc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjog
Ik1haW4gcmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiBvbiBuZXh0IHBhZ2UgbG9h
ZCBhbmQgZnVsZmlsbHMgcmVxdWVzdCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAg
ICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAg
ICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sIiwKKyAgICAg
ICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0
YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgV0kubmV0d29ya01h
bmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVx
dWVzdEludGVyY2VwdGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3Rhcmdl
dCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgTmV0
d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZTogInRl
eHQvaHRtbCIsCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGA8IURPQ1RZUEUgaHRtbD48
aHRtbD48aGVhZD48c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48
L2ArYHNjcmlwdD48L2hlYWQ+PGJvZHk+PHA+T3ZlcnJpZGRlbiBwYWdlIGNvbnRlbnQ8L3A+PHNj
cmlwdD5hbGVydCgiUkVQTEFDRUQgSFRNTCBDT05URU5UIik7IFRlc3RQYWdlLmNvbXBsZXRlVGVz
dCgpOzwvYCtgc2NyaXB0PjwvYm9keT48L2h0bWw+YCwKKyAgICAgICAgICAgICAgICAgICAgYmFz
ZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAg
ICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgICAgICAgICBo
ZWFkZXJzOiB7fSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2Us
IHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24g
aW50ZXJjZXB0aW5nIHRoZSBtYWluIHJlc291cmNlIGxvYWQgd2l0aCByZXNwb25zZS48L3A+Cis8
c2NyaXB0PmFsZXJ0KCJPUklHSU5BTCBIVE1MIENPTlRFTlQiKTs8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291
cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkwNzE3OTY5YWQ1MjY2YjI4ODY2YTViYmY0MGNlY2Q3M2I2
MzdhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEs
NDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3Bl
Y3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdCIp
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRl
cmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiTWFpbiBy
ZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9uIG5leHQgcGFnZSBsb2FkIiwKKyAg
ICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5hZGRJ
bnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJj
ZS5odG1sIiwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5l
dHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgV0kubmV0d29ya01hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01h
bmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAg
ICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmludm9rZSh7Cisg
ICAgICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbCIs
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBh
Z2Uoe2lnbm9yZUNhY2hlOiBmYWxzZSwgcmV2YWxpZGF0ZUFsbFJlc291cmNlczogdHJ1ZX0pOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVz
dCByZXF1ZXN0IGludGVyY2VwdGlvbiBpbnRlcmNlcHRpbmcgdGhlIG1haW4gcmVzb3VyY2UgbG9h
ZC48L3A+Cis8c2NyaXB0PmFsZXJ0KCJPUklHSU5BTCBIVE1MIENPTlRFTlQiKTs8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjYWY5ZjZjZGIyOTVlMGI1
MmEzNzc2ZGQ3NThiZDM5YzE4ZDljNWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODMgQEAKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24g
YWx0ZXJpbmcgcmVxdWVzdCBwcm9wZXJ0aWVzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTog
TmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2QKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBk
ZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVj
aG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBQT1NUCisgIFJl
cXVlc3QgSGVhZGVyczoKKyAgICBDb250ZW50LUxlbmd0aDogMAorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZERlbGV0ZQorVHJpZ2dlcmluZyBs
b2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBN
ZXRob2Q6IERFTEVURQorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6IDAK
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2RO
b25TdGFuZGFyZAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTog
L2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9u
c2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IE5PTlNUQU5EQVJECisgIFJlcXVlc3QgSGVh
ZGVyczoKKyAgICBDb250ZW50LUxlbmd0aDogMAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZEVtcHR5CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jl
cXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVy
Y2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogR0VU
CisgIFJlcXVlc3QgSGVhZGVyczoKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50
ZXJjZXB0UmVxdWVzdC5VUkwKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgor
ICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP25l
d1VSTD12YWx1ZQorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwP25ld1VSTD12YWx1ZQorICBN
ZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgIEdldDoKKyAgICBuZXdVUkw6IHZhbHVl
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMRnJh
Z21lbnQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6IC9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVS
TDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRl
cmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFkZXJzOgorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTEVtcHR5CitUcmln
Z2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAgVGhlIFVSTCBjYW7igJl0IGJlIHNo
b3duCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuSGVh
ZGVycworVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVy
Y2VwdC1lY2hvLnBocAorICBNZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgWC1W
YWx1ZTogb3ZlcnJpZGRlbgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNl
cHRSZXF1ZXN0LlBvc3REYXRhCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoK
KyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAor
ICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogUE9TVAorICBSZXF1ZXN0IEhl
YWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6IDE2CisgICAgQ29udGVudC1UeXBlOiBhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKKyAgUG9zdDoKKyAgICB2YWx1ZTogb3ZlcnJpZGRl
bgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtcHJvcGVydGllcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMwOGE1ZGRmYTk1NDllOTBmNmRlYTU3NDA3MGNmZmJiZTBkMTdjNmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbApAQCAtMCwwICsxLDE4MSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkKK3sKKyAgICB0cnkgeworICAgICAgICBs
ZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOworICAgICAgICAvLyBFdmFsIHRvIGFjY2Vw
dCB0cmFpbGluZyBjb21hIEpTT04uCisgICAgICAgIGxldCBkYXRhID0gZXZhbCgiKCIgKyAoYXdh
aXQgcmVzcG9uc2UudGV4dCgpIHx8ICJ7fSIpICsgIikiKTsKKyAgICAgICAgZGF0YS5yZXNwb25z
ZVVSTCA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICByZXR1cm4geyBlcnJvcjogZS5tZXNzYWdlIH07CisgICAgfQorfQorCith
c3luYyBmdW5jdGlvbiBwb3N0RGF0YSh1cmwpCit7CisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQg
ZmV0Y2godXJsLCB7CisgICAgICAgIG1ldGhvZDogIlBPU1QiLAorICAgICAgICBoZWFkZXJzOiB7
CisgICAgICAgICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJs
ZW5jb2RlZCIsCisgICAgICAgIH0sCisgICAgICAgIGJvZHk6ICJ2YWx1ZT1vcmlnaW5hbCIsCisg
ICAgfSk7CisgICAgLy8gRXZhbCB0byBhY2NlcHQgdHJhaWxpbmcgY29tYSBKU09OLgorICAgIGxl
dCBkYXRhID0gZXZhbCgiKCIgKyAoYXdhaXQgcmVzcG9uc2UudGV4dCgpIHx8ICJ7fSIpICsgIiki
KTsKKyAgICBkYXRhLnJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsOworICAgIHJldHVybiBkYXRh
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKworICAg
IE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQt
ZWNoby5waHAiLAorICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsu
TmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBsb2dSZXF1ZXN0
KHJlc3VsdCkgeworICAgICAgICBsZXQgcmVxdWVzdCA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAg
aWYgKHJlcXVlc3QuZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgICR7
cmVxdWVzdC5lcnJvcn1gKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFVSSTogJHtyZXF1ZXN0LnVyaX1gKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coYCAgUmVzcG9uc2UgVVJMOiAke3JlcXVlc3QucmVzcG9uc2VVUkx9
YCk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIE1ldGhvZDogJHtyZXF1ZXN0Lm1ldGhv
ZH1gKTsKKyAgICAgICAgbGV0IGhlYWRlcktleXMgPSBPYmplY3Qua2V5cyhyZXF1ZXN0LmhlYWRl
cnMpOworICAgICAgICBpZiAoaGVhZGVyS2V5cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGhlYWRl
cktleXMuc29ydCgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgUmVxdWVzdCBI
ZWFkZXJzOmApOworICAgICAgICAgICAgZm9yIChsZXQgbmFtZSBvZiBoZWFkZXJLZXlzKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dpdGgoIlgtIikgJiYgIW5hbWUuc3RhcnRz
V2l0aCgiQ29udGVudC0iKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgbGV0IHZhbHVlID0gcmVxdWVzdC5oZWFkZXJzW25hbWVdOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKGAgICAgJHtuYW1lfTogJHt2YWx1ZX1gKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgZ2V0S2V5cyA9IE9iamVjdC5rZXlzKHJlcXVl
c3QuZ2V0KTsKKyAgICAgICAgaWYgKGdldEtleXMubGVuZ3RoKSB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiICBHZXQ6Iik7CisgICAgICAgICAgICBnZXRLZXlzLnNvcnQoKTsKKyAg
ICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgZ2V0S2V5cykgeworICAgICAgICAgICAgICAgIGxl
dCB2YWx1ZSA9IHJlcXVlc3QuZ2V0W25hbWVdOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKGAgICAgJHtuYW1lfTogJHt2YWx1ZX1gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBsZXQgcG9zdEtleXMgPSBPYmplY3Qua2V5cyhyZXF1ZXN0LnBvc3QpOworICAg
ICAgICBpZiAocG9zdEtleXMubGVuZ3RoKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiICBQb3N0OiIpOworICAgICAgICAgICAgcG9zdEtleXMuc29ydCgpOworICAgICAgICAgICAg
Zm9yIChsZXQgbmFtZSBvZiBwb3N0S2V5cykgeworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9
IHJlcXVlc3QucG9zdFtuYW1lXTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhg
ICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmdW5jdGlvbiBhZGRUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Np
b24sIG92ZXJyaWRlc30pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAg
ICAgbmFtZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2Fk
Li4uIik7CisgICAgICAgICAgICAgICAgbGV0IFtyZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudCwgZmV0
Y2hSZXNwb25zZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJ
Lm5ldHdvcmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVz
dEludGVyY2VwdGVkKSwKKyAgICAgICAgICAgICAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRl
KGV4cHJlc3Npb24pLAorICAgICAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAgICAgYXdh
aXQgTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmludm9rZSh7CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdEludGVyY2VwdGVkRXZlbnQuZGF0YS5yZXF1ZXN0
SWQsCisgICAgICAgICAgICAgICAgICAgIC4uLm92ZXJyaWRlcywKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IFJ1bnRpbWVBZ2VudC5h
d2FpdFByb21pc2UoZmV0Y2hSZXNwb25zZS5yZXN1bHQub2JqZWN0SWQsIHRydWUpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0IGRldGFpbHM6Iik7CisgICAgICAg
ICAgICAgICAgbG9nUmVxdWVzdChyZXNwb25zZS5yZXN1bHQpOworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24iLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0
Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlk
ZXM6IHsgbWV0aG9kOiAiUE9TVCIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2REZWxldGUiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRo
IERFTEVURSIsCisgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRl
cmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeyBtZXRob2Q6ICJERUxFVEUi
IH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3Jr
LmludGVyY2VwdFJlcXVlc3QuTWV0aG9kTm9uU3RhbmRhcmQiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRoIE5PTlNUQU5EQVJEIiwK
KyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hv
LnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIk5PTlNUQU5EQVJEIiB9LAor
ICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRl
cmNlcHRSZXF1ZXN0Lk1ldGhvZEVtcHR5IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyBy
ZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBlbXB0eSBzdHJpbmciLAorICAgICAgICBl
eHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAor
ICAgICAgICBvdmVycmlkZXM6IHsgbWV0aG9kOiAiIiB9LAorICAgIH0pOworCisgICAgYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTCIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdp
dGggZGlmZmVyZW50IFVSTCIsCisgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoJ3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeyB1cmw6ICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2Vw
dC1lY2hvLnBocD9uZXdVUkw9dmFsdWUiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMRnJhZ21lbnQiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3
aXRoIFVSTCB3aXRoIGZyYWdtZW50IiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgn
cmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IHVy
bDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50
ZXJjZXB0LWVjaG8ucGhwI2ZyYWdtZW50IiB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTEVtcHR5IiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0
aCBlbXB0eSBVUkwiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNvdXJjZXMv
aW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgdXJsOiAiIiB9LAor
ICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRl
cmNlcHRSZXF1ZXN0LkhlYWRlcnMiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVl
c3QgaGVhZGVycyBpbnRlcmNlcHRpb24iLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRh
KCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsg
aGVhZGVyczogeyAiWC1WYWx1ZSI6ICJvdmVycmlkZGVuIiB9IH0sCisgICAgfSk7CisKKyAgICBh
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuUG9z
dERhdGEiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgcG9zdCBkYXRhIGlu
dGVyY2VwdGlvbiIsCisgICAgICAgIGV4cHJlc3Npb246ICJwb3N0RGF0YSgncmVzb3VyY2VzL2lu
dGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7CisgICAgICAgICAgICBt
ZXRob2Q6ICJQT1NUIiwKKyAgICAgICAgICAgIHBvc3REYXRhOiBidG9hKCJ2YWx1ZT1vdmVycmlk
ZGVuIiksCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRG
aW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBhbHRlcmluZyByZXF1ZXN0IHByb3BlcnRp
ZXMuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTVmNGUw
N2VmYjYyNmEzZmEzZmNlOTU2ZDNjNTExZjk4MDIzYWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1z
dWJyZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitBTEVSVDogREVGQVVMVCBv
dmVycmlkZS5qcyBURVhUCitBTEVSVDogT1ZFUlJJREVOIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3Qg
cmVxdWVzdCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5nIHRoZSBzdWJyZXNvdXJjZSBsb2FkLgor
CisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0CistLSBS
dW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkYmZkNDczZmE5
ODQ5ZWVkMDA1YjY0MWQ4ZDNkMjExNjg4MGZlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJl
c291cmNlLXdpdGgtZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK0FMRVJUOiBF
cnJvciBsb2FkaW5nIHN0eWxlc2hlZXQKK0NPTlNPTEUgTUVTU0FHRTogQWNjZXNzIGRlbmllZAor
QUxFUlQ6IEVycm9yIGxvYWRpbmcgc3R5bGVzaGVldAorQUxFUlQ6IEVycm9yIGxvYWRpbmcgc3R5
bGVzaGVldAorQUxFUlQ6IEVycm9yIGxvYWRpbmcgc3R5bGVzaGVldAorVGVzdCByZXF1ZXN0IGlu
dGVyY2VwdGlvbiB3aXRoIGVycm9yIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC4KKworCis9PSBS
dW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhFcnJvcgorLS0g
UnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3
aXRoIGdlbmVyYWwgZXJyb3IKK1RyaWdnZXJpbmcgbG9hZC4uLgorRkFJTFVSRSBURVhUOiBSZXF1
ZXN0IGludGVyY2VwdGVkCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2Vw
dFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBhY2Nlc3MgZXJyb3IKK1RyaWdnZXJpbmcgbG9hZC4u
LgorRkFJTFVSRSBURVhUOiBBY2Nlc3MgZGVuaWVkCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBjYW5jZWxlZCBlcnJvcgor
VHJpZ2dlcmluZyBsb2FkLi4uCitGQUlMVVJFIFRFWFQ6IFJlcXVlc3QgY2FuY2VsZWQKKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3
aXRoIHRpbWVvdXQgZXJyb3IKK1RyaWdnZXJpbmcgbG9hZC4uLgorRkFJTFVSRSBURVhUOiBSZXF1
ZXN0IHRpbWVkIG91dAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3IuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0YTFhNTU5NTY0
ZGEzZWFjMThmYzgzYzI3MzllYjQ5NGRiZDU1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJl
c291cmNlLXdpdGgtZXJyb3IuaHRtbApAQCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGxvYWRTdWJyZXNvdXJjZSgpCit7CisgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsaW5rIik7CisgICAgbGluay5yZWwgPSAic3R5bGVzaGVldCI7CisgICAgbGluay5o
cmVmID0gInJlc291cmNlcy9zdHlsZXNoZWV0LmNzcyI7CisgICAgbGluay5vbmVycm9yID0gKCkg
PT4gYWxlcnQoJ0Vycm9yIGxvYWRpbmcgc3R5bGVzaGVldCcpOworICAgIGRvY3VtZW50LmhlYWQu
YXBwZW5kQ2hpbGQobGluayk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0
ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0V2l0aEVycm9yIik7CisKKyAgICBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9r
ZSh7CisgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiLAorICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFj
a2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBm
dW5jdGlvbiBhZGRUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Npb24sIGVycm9y
VHlwZX0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwK
KyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7Cisg
ICAgICAgICAgICAgICAgbGV0IFtyZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudCwgZmV0Y2hSZXNwb25z
ZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtN
YW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2Vw
dGVkKSwKKyAgICAgICAgICAgICAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlKCJsb2FkU3Vi
cmVzb3VyY2UoKSIpLAorICAgICAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAgICAgbGV0
IFtsb2FkaW5nRGlkRmFpbEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAg
ICAgICAgICAgV0kuUmVzb3VyY2UuYXdhaXRFdmVudChXSS5SZXNvdXJjZS5FdmVudC5Mb2FkaW5n
RGlkRmFpbCksCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNl
cHRSZXF1ZXN0V2l0aEVycm9yLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0SWQ6IHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3JUeXBlLAorICAgICAgICAgICAgICAgICAgICB9KQorICAgICAg
ICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMVVJF
IFRFWFQ6ICIgKyBsb2FkaW5nRGlkRmFpbEV2ZW50LnRhcmdldC5mYWlsdXJlUmVhc29uVGV4dCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRo
IGdlbmVyYWwgZXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMg
cmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBnZW5lcmFsIGVycm9yIiwKKyAgICAgICAgZXJyb3JU
eXBlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5HZW5l
cmFsLAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29y
ay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggYWNjZXNzIGVycm9yIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdp
dGggYWNjZXNzIGVycm9yIiwKKyAgICAgICAgZXJyb3JUeXBlOiBJbnNwZWN0b3JCYWNrZW5kLkVu
dW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5BY2Nlc3NDb250cm9sLAorICAgIH0pOworCisg
ICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
LlN1YnJlc291cmNlIHdpdGggY2FuY2VsZWQgZXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBjYW5jZWxlZCBlcnJv
ciIsCisgICAgICAgIGVycm9yVHlwZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuUmVz
b3VyY2VFcnJvclR5cGUuQ2FuY2VsbGF0aW9uLAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdp
dGggdGltZW91dCBlcnJvciIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2UgdXNl
cyByZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIHRpbWVvdXQgZXJyb3IiLAorICAgICAgICBlcnJv
clR5cGU6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLlJlc291cmNlRXJyb3JUeXBlLlRp
bWVvdXQsCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCBy
ZXF1ZXN0IGludGVyY2VwdGlvbiB3aXRoIGVycm9yIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVz
cG9uc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZDcwYTE2NmM3NjkxM2E4ZWRlMzM4MmViOWMyZjhlZjk5MmVhNzgy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDggQEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK0FM
RVJUOiBPVkVSUklEREVOIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRp
b24gd2l0aCByZXNwb25zZSBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisKKworPT0gUnVubmlu
ZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0
aCByZXNwb25zZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZjY1MzRk
NGIyODRlZDBlYzg1Yzc0NjI0ZmE3ZDMwZmYzYTEwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFz
eW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIpOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LlN1YnJlc291cmNlIHdpdGggcmVzcG9uc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1
YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNwb25zZSIsCisgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuYWRkSW50
ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIsCisgICAgICAg
ICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFn
ZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5h
Z2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVl
c3RJbnRlcmNlcHRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQs
IHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIE5ldHdv
cmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLmludm9rZSh7CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0
L2phdmFzY3JpcHQiLAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgYWxlcnQoIk9WRVJS
SURERU4gb3ZlcnJpZGUuanMgVEVYVCIpOyBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVu
ZCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpO2AsCisgICAgICAgICAgICAgICAgICAgIGJhc2U2
NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVh
ZGVyczoge30sCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2Us
IHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3Bl
Y3RvclRlc3QuYXdhaXRFdmVudCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0
IGludGVyY2VwdGlvbiB3aXRoIHJlc3BvbnNlIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Uu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZjU4NzljMTc5ZTJkMzBmOWY4Y2ZkMjY2ZDM5ODU2ODhhZDY4NzRh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRl
c3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVl
c3QuU3VicmVzb3VyY2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMg
cmVxdWVzdCBpbnRlcmNlcHRpb24iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAg
ICAgYXdhaXQgTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAg
ICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvb3ZlcnJpZGUuanMiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0ku
TmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCAoZXZlbnQpID0+IHsKKyAg
ICAgICAgICAgICAgICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRh
dGE7CisgICAgICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmlu
dm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNj
cmlwdC5qcyIsCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5y
ZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRy
dWV9KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiT3ZlcnJp
ZGVDb250ZW50RGlkTG9hZCIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5U
ZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBpbnRlcmNlcHRpbmcg
dGhlIHN1YnJlc291cmNlIGxvYWQuPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVycmlk
ZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVz
cG9uc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iOTBiNWJhN2RiOGZkMjBjOWMzOWEyZTc4NWVjNjE4NDlmOTczOGUyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcxIEBACitB
TEVSVDogREVGQVVMVCBvdmVycmlkZS5qcyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9u
IHdpdGggcmVzcG9uc2UuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVy
Y2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmlu
dGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVGV4dAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNw
b25zZSBkZXRhaWxzOgorICBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUgVHlwZTogdGV4dC9wbGFpbgorICBT
dGF0dXM6IDk4NyBPdmVycmlkZSBTdGF0dXMgVGV4dAorICBSZXNwb25zZSBIZWFkZXJzOgorICAg
IGNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbgorICAgIHgtb3ZlcnJpZGUtaGVhZGVyLTE6IE92ZXJy
aWRlLUhlYWRlci1WYWx1ZS0xCisgICAgeC1vdmVycmlkZS1oZWFkZXItMjogT3ZlcnJpZGUtSGVh
ZGVyLVZhbHVlLTIKKyAgQ29udGVudDogUEFTUyAtIE9WRVJSSURERU4gVEVYVAorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkphdmFT
Y3JpcHQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJMOiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4
dAorICBNSU1FIFR5cGU6IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQKKyAgU3RhdHVzOiAyMDAgU3Vw
ZXIgT0sKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9u
L2phdmFzY3JpcHQKKyAgICB4LWN1c3RvbS1oZWFkZXI6IEhlYWRlciB2YWx1ZQorICBDb250ZW50
OiAvKiBQQVNTICovIChmdW5jdGlvbigpIHsgLyogT1ZFUlJJRERFTiAqLyB9KSgpOworCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLklt
YWdlCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQK
KyAgTUlNRSBUeXBlOiBpbWFnZS9wbmcKKyAgU3RhdHVzOiAyMDAgT0sKKyAgUmVzcG9uc2UgSGVh
ZGVyczoKKyAgICBjb250ZW50LXR5cGU6IGltYWdlL3BuZworICBDb250ZW50OiA8ZGF0YT4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25z
ZS5VUkwuUXVlcnlTdHJpbmcKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoK
KyAgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L292ZXJyaWRlLnR4dD9zPTIKKyAgTUlNRSBUeXBlOiB0ZXh0L3BsYWluCisgIFN0YXR1czogMjAw
IE9LCisgIFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVudC10eXBlOiB0ZXh0L3BsYWluCisg
ICAgeC1leHBlY3RlZDogUEFTUworICBDb250ZW50OiBQQVNTCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVVJMLkZyYWdtZW50CitU
cmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQKKyAgTUlN
RSBUeXBlOiB0ZXh0L3BsYWluCisgIFN0YXR1czogMjAwIE9LCisgIFJlc3BvbnNlIEhlYWRlcnM6
CisgICAgY29udGVudC10eXBlOiB0ZXh0L3BsYWluCisgICAgeC1leHBlY3RlZDogUEFTUworICBD
b250ZW50OiBQQVNTCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJl
cXVlc3RXaXRoUmVzcG9uc2UuNDA0CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFp
bHM6CisgIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9vdmVycmlkZS50eHQKKyAgTUlNRSBUeXBlOiB0ZXh0L3BsYWluCisgIFN0YXR1czogNDA0
IE5vdCBGb3VuZAorICBSZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtdHlwZTogdGV4dC9w
bGFpbgorICAgIHgtZXhwZWN0ZWQ6IFBBU1MKKyAgQ29udGVudDogUEFTUworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LXdpdGgtcmVzcG9uc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA5NzEzM2UwNzUwMThkY2VjODVmMjk2NzI5NzFhOTQ5ZjliZDZmZjAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1y
ZXF1ZXN0LXdpdGgtcmVzcG9uc2UuaHRtbApAQCAtMCwwICsxLDE3NCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCith
c3luYyBmdW5jdGlvbiB0cmlnZ2VyT3ZlcnJpZGVMb2FkKHVybFN1ZmZpeCkgeworICAgIGxldCB1
cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9v
dmVycmlkZS50eHQiOworICAgIGlmICh1cmxTdWZmaXgpCisgICAgICAgIHVybCArPSB1cmxTdWZm
aXg7CisKKyAgICB0cnkgeworICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwp
OworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdXJsOiByZXNwb25zZS51cmwsCisgICAg
ICAgICAgICB0ZXh0OiBhd2FpdCByZXNwb25zZS50ZXh0KCksCisgICAgICAgICAgICBzdGF0dXM6
IHJlc3BvbnNlLnN0YXR1cywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1
c1RleHQsCisgICAgICAgICAgICBoZWFkZXJzOiBBcnJheS5mcm9tKHJlc3BvbnNlLmhlYWRlcnMp
LAorICAgICAgICB9OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIHsgZXJyb3I6
IGUubWVzc2FnZSB9OworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJl
cXVlc3RXaXRoUmVzcG9uc2UiKTsKKyAgICAKKyAgICBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0
aW9uLmludm9rZSh7CisgICAgICAgIHVybDogIi4qb3ZlcnJpZGVcLnR4dC4qIiwKKyAgICAgICAg
aXNSZWdleDogdHJ1ZSwKKyAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3
b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgIH0pOworCisgICAgZnVuY3Rpb24gbG9nUmVz
cG9uc2UocmVzcG9uc2UpIHsKKyAgICAgICAgcmVzcG9uc2UuaGVhZGVycyA9IG5ldyBNYXAocmVz
cG9uc2UuaGVhZGVycyk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFVSTDogJHtyZXNw
b25zZS51cmx9YCk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIE1JTUUgVHlwZTogJHty
ZXNwb25zZS5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIil9YCk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKGAgIFN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3RhdHVz
VGV4dH1gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgUmVzcG9uc2UgSGVhZGVyczpg
KTsKKyAgICAgICAgbGV0IGtleXMgPSBBcnJheS5mcm9tKHJlc3BvbnNlLmhlYWRlcnMua2V5cygp
KTsKKyAgICAgICAga2V5cy5zb3J0KCk7CisgICAgICAgIGZvciAobGV0IG5hbWUgb2Yga2V5cykg
eworICAgICAgICAgICAgbGV0IHZhbHVlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQobmFtZSk7Cisg
ICAgICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgieC0iKSAmJiAhbmFtZS5zdGFydHNXaXRo
KCJjb250ZW50LSIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coYCAgICAke25hbWV9OiAke3ZhbHVlfWApOworICAgICAgICB9CisgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKGAgIENvbnRlbnQ6ICR7cmVzcG9uc2UudGV4dH1gKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBhZGRUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJl
c3Npb24sIHJlc3BvbnNlRGF0YX0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgYXN5
bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmlu
ZyBsb2FkLi4uIik7CisgICAgICAgICAgICAgICAgbGV0IFtyZXF1ZXN0SW50ZXJjZXB0ZWRFdmVu
dCwgZmV0Y2hSZXNwb25zZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAg
ICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQu
UmVxdWVzdEludGVyY2VwdGVkKSwKKyAgICAgICAgICAgICAgICAgICAgUnVudGltZUFnZW50LmV2
YWx1YXRlKGV4cHJlc3Npb24pLAorICAgICAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAg
ICAgYXdhaXQgTmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tl
KHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVu
dC5kYXRhLnJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgLi4ucmVzcG9uc2VEYXRhLAor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdh
aXQgUnVudGltZUFnZW50LmF3YWl0UHJvbWlzZShmZXRjaFJlc3BvbnNlLnJlc3VsdC5vYmplY3RJ
ZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlc3BvbnNlIGRl
dGFpbHM6Iik7CisgICAgICAgICAgICAgICAgbG9nUmVzcG9uc2UocmVzcG9uc2UucmVzdWx0LnZh
bHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNl
LlRleHQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkludGVyY2VwdCByZXF1ZXN0IHdpdGggdGV4
dCBjb250ZW50LiIsCisgICAgICAgIGV4cHJlc3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKClg
LAorICAgICAgICByZXNwb25zZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRlbnQ6IGBQQVNTIC0g
T1ZFUlJJRERFTiBURVhUYCwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAg
ICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1czogOTg3
LAorICAgICAgICAgICAgc3RhdHVzVGV4dDogIk92ZXJyaWRlIFN0YXR1cyBUZXh0IiwKKyAgICAg
ICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAgICAgICAgICAiWC1PdmVycmlkZS1IZWFkZXItMSI6
ICJPdmVycmlkZS1IZWFkZXItVmFsdWUtMSIsCisgICAgICAgICAgICAgICAgIlgtT3ZlcnJpZGUt
SGVhZGVyLTIiOiAiT3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTIiLAorICAgICAgICAgICAgfSwKKyAg
ICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5KYXZhU2NyaXB0IiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJJbnRlcmNlcHQgcmVxdWVzdCB3aXRoIGphdmFzY3JpcHQgY29udGVudC4i
LAorICAgICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAg
cmVzcG9uc2VEYXRhOiB7CisgICAgICAgICAgICBjb250ZW50OiBgLyogUEFTUyAqLyAoZnVuY3Rp
b24oKSB7IC8qIE9WRVJSSURERU4gKi8gfSkoKTtgLAorICAgICAgICAgICAgYmFzZTY0RW5jb2Rl
ZDogZmFsc2UsCisgICAgICAgICAgICBtaW1lVHlwZTogImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
LAorICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiU3Vw
ZXIgT0siLAorICAgICAgICAgICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICJYLUN1c3Rv
bS1IZWFkZXIiOiAiSGVhZGVyIHZhbHVlIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0sCisg
ICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVy
Y2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuSW1hZ2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIklu
dGVyY2VwdCByZXF1ZXN0IHdpdGggaW1hZ2UgY29udGVudC4iLAorICAgICAgICBleHByZXNzaW9u
OiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7CisgICAg
ICAgICAgICBjb250ZW50OiBidG9hKCI8ZGF0YT4iKSwKKyAgICAgICAgICAgIGJhc2U2NEVuY29k
ZWQ6IHRydWUsCisgICAgICAgICAgICBtaW1lVHlwZTogImltYWdlL3BuZyIsCisgICAgICAgICAg
ICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAg
ICBoZWFkZXJzOiB7fSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwu
UXVlcnlTdHJpbmciLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgb3ZlcnJpZGVzIHdpdGgg
ZGlmZmVyZW50IHF1ZXJ5IHN0cmluZ3MuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJP
dmVycmlkZUxvYWQoIj9zPTIiKWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAg
ICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisg
ICAgICAgICAgICBtaW1lVHlwZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgc3RhdHVzOiAy
MDAsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgaGVhZGVyczog
eyJYLUV4cGVjdGVkIjogIlBBU1MifSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNw
b25zZS5VUkwuRnJhZ21lbnQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgb3ZlcnJpZGUg
Zm9yIGEgbG9hZCB3aXRoIGEgZnJhZ21lbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdn
ZXJPdmVycmlkZUxvYWQoIiNmcmFnIilgLAorICAgICAgICByZXNwb25zZURhdGE6IHsKKyAgICAg
ICAgICAgIGNvbnRlbnQ6ICJQQVNTIiwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNl
LAorICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1
czogMjAwLAorICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgIGhlYWRl
cnM6IHsiWC1FeHBlY3RlZCI6ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBh
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRo
UmVzcG9uc2UuNDA0IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGZvciBhIDQwNCBvdmVy
cmlkZS4iLAorICAgICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAg
ICAgICAgcmVzcG9uc2VEYXRhOiB7CisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAg
ICAgICAgICBiYXNlNjRFbmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4
dC9wbGFpbiIsCisgICAgICAgICAgICBzdGF0dXM6IDQwNCwKKyAgICAgICAgICAgIHN0YXR1c1Rl
eHQ6ICJOb3QgRm91bmQiLAorICAgICAgICAgICAgaGVhZGVyczogeyJYLUV4cGVjdGVkIjogIlBB
U1MifSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UuPC9wPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9vdmVycmlkZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlh
YjUwYTU3YTQ0ZGE4YmM2ZjExOGViNWZkZWJiZTcxMmFmNGUxYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVy
Y2VwdC1lY2hvLnBocApAQCAtMCwwICsxLDE4IEBACit7CisgICAgInVyaSI6ICI8P3BocCBlY2hv
ICRfU0VSVkVSWydSRVFVRVNUX1VSSSddID8+IiwKKyAgICAibWV0aG9kIjogIjw/cGhwIGVjaG8g
JF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ107ID8+IiwKKyAgICAiaGVhZGVycyI6IHsKKzw/cGhw
IGZvcmVhY2ggKGdldGFsbGhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAg
ICAgIjw/cGhwIGVjaG8gJG5hbWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8P3Bo
cCB9ID8+IH0sCisgICAgImdldCI6IHsKKzw/cGhwIGZvcmVhY2ggKCRfR0VUIGFzICRuYW1lID0+
ICR2YWx1ZSkgeyA/PgorICAgICAgICAiPD9waHAgZWNobyAkbmFtZTsgPz4iOiAiPD9waHAgZWNo
byAkdmFsdWU7ID8+IiwKKzw/cGhwIH0gPz4KKyAgICB9LAorICAgICJwb3N0IjogeworPD9waHAg
Zm9yZWFjaCAoJF9QT1NUIGFzICRuYW1lID0+ICR2YWx1ZSkgeyA/PgorICAgICAgICAiPD9waHAg
ZWNobyAkbmFtZTsgPz4iOiAiPD9waHAgZWNobyAkdmFsdWU7ID8+IiwKKzw/cGhwIH0gPz4KKyAg
ICB9LAorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2Vw
dC1yZXF1ZXN0LW92ZXJyaWRlbi1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyMjE2N2VkYjBiYmUz
ZmIwNzJjNDcxZWM4MjM3NDk1M2E1ZDJhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1wYWdlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD48L2hlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9p
bnNwZWN0b3ItdGVzdC5qcyI+CisgICAgPC9zY3JpcHQ+CisgICAgPGJvZHk+CisgICAgICAgIDxw
Pk92ZXJyaWRkZW4gcGFnZSBjb250ZW50PC9wPgorICAgICAgICA8c2NyaXB0PmFsZXJ0KCJSRVBM
QUNFRCBIVE1MIENPTlRFTlQiKTsgVGVzdFBhZ2UuY29tcGxldGVUZXN0KCk7PC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNj
cmlwdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3Vy
Y2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc4
ZWM0ZTI2MTE1N2QzMzA5MTljMTMyODk5OTU1Nzc5ODkzN2VhYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVy
Y2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMKQEAgLTAsMCArMSwyIEBACithbGVydCgi
T1ZFUlJJREVOIG92ZXJyaWRlLmpzIFRFWFQiKTsKK1Rlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zy
b250ZW5kKCJPdmVycmlkZUNvbnRlbnREaWRMb2FkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCmlu
ZGV4IGEwMjY0OWQ1NmJkYjNkMjg1YzFmMGQ3ZjgwMGNmZTQxMDg5MjI2NDEuLjgzMWE2MWY2Nzg1
ZTQ0ODhiMTJkN2RmZGVmMWZlNjZkMzc1NTEyMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCkBA
IC04NywxMiArODcsMTQgQEAgVGVzdFBhZ2UucnVuVGVzdCA9IHdpbmRvdy5ydW5UZXN0ID0gZnVu
Y3Rpb24oKQogICAgIGlmICh0eXBlb2YgdGVzdEZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKSB7CiAg
ICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gc2VuZCB0ZXN0KCkgYmVjYXVzZSBpdCBpcyBub3QgYSBm
dW5jdGlvbi4iKTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBsZXQgdXJsID0gdGVzdFJ1bm5lci5pbnNwZWN0b3JUZXN0U3R1
YlVSTDsKICAgICBpZiAoIXVybCkgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIG9idGFpbiBp
bnNwZWN0b3IgdGVzdCBzdHViIFVSTC4iKTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5Jbml0aWFsaXph
dGlvbk1ldGhvZHNJbkZyb250ZW5kKGluaXRpYWxpemVycykKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJl
c3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJj
ZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sCmluZGV4IDQ0ODA2NDIwMDQ0NzY5N2Zi
MDdmNDE2ZTk3ODYzOThlMDAzZDI0NjAuLmQ2NmUxNDBlYjcxNzg2NDdjMzg4NjI5YjBkMTNlMWFh
MDFhMDMwYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2Fs
LXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVz
cG9uc2UuaHRtbApAQCAtNDYsNyArNDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAg
IC8vIExldCB0aGUgbG9hZCBjb250aW51ZS4KICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxs
KFsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDog
Ik5ldHdvcmsucmVzcG9uc2VSZWNlaXZlZCJ9KSwKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JQ
cm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUi
LCBwYXJhbXM6IHtyZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJlcXVlc3RJZH19KSwK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDog
Ik5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHtyZXF1ZXN0SWQ6IG1lc3NhZ2VP
YmplY3QucGFyYW1zLnJlcXVlc3RJZCwgc3RhZ2U6ICJyZXNwb25zZSJ9fSksCiAgICAgICAgICAg
ICBdKTsKICAgICAgICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJSZXNwb25zZSByZWNlaXZlZC4i
KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2RhdGEtaW50ZXJjZXB0ZWQuanNvbiBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0ZTJiMGQ5OTY3Y2Vi
MWVkN2UzMmNkMTkyOTM1ZGYxNzY1ODEyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24KQEAgLTAs
MCArMSBAQAoraW50ZXJjZXB0ZWQgcmVxdWVzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAz
OTM1ZmViNzQ0ZDQ3Y2Y2MWZkM2MxZjMzODkyYmJlN2YyYWU5Yjk2Li42ZGQ0ZmMwMmI1NTY3MzRh
ZGU1NzJkNmZjZmFlNTcyM2I1NjlmMDJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC01NzQsNiArNTc0LDE4IEBAIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtc2NyaXB0LXRhZy5odG1sIFsg
RmFpbHVyZSBdCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNl
LWluc3BlY3Rvci1vdmVycmlkZS5odG1sIFsgRmFpbHVyZSBdCiBpbnNwZWN0b3IvbmV0d29yay9s
b2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sIFsgU2tpcCBdCiAK
KyMgUmVxdWVzdCBpbnRlcmNlcHRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBXZWJLaXQxCitodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QuaHRtbCBb
IFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1j
b250aW51ZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVy
Y2VwdC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sIFsgU2tpcCBdCito
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sIFsg
U2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwg
WyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
d2l0aC1yZXNwb25zZS5odG1sIFsgU2tpcCBdCisKIHdlYmtpdC5vcmcvYi8xNjQ5MzMgaHR0cC90
ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sIFsgRmFpbHVyZSBdCiAKIHdl
YmtpdC5vcmcvYi8xNjU1NDEgY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtb3Zlcmxh
cC1leHRlbnQtcnRsLmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401940</attachid>
            <date>2020-06-15 14:32:05 -0700</date>
            <delta_ts>2020-06-15 14:33:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200615143204.patch</filename>
            <type>text/plain</type>
            <size>112878</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTk1MjMwNmRlNGQ3MDNlYWNkY2VkYTliYzFlNjUxYzg0OGFmNGE4Li4xMjhjMTk4ZmE5YTczMzk1
MDYyZTNiNTg3NDkwNTJjMTVhYTZmNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0xMSAgUGF1bG8gTWF0
b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBpbmNsdWRlIHRv
IEpTT05PYmplY3QuY3BwIC0gbm9uLXVuaWZpZWQgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGM5MDI3
ZjM1ZDA3ZjcyOTQwMjVmY2Y3ZGY5NjM5MzQzYTllNmM5Li40YWFlMGRiN2JhOTA4Mzg0N2ExYTc2
OWNkMWJjY2Y5ZTg2N2U1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjAtMDYt
MDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAg
cHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90
aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVs
ZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3Qn
IGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGlu
dWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1mcmFnbWVudC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2Uu
aHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hv
dWxkSW50ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6Omlu
dGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNv
bnRpbnVlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0Q29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVz
dDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdDo6Y29udGludWVXaXRoT3JpZ2lu
YWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6UGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3Q6OmNvbnRpbnVlV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0w
Ni0xMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcHJvdmUgdXJs
LXNldHRlcnMuaHRtbCBXUFQgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMDFlZmUz
ZDJmMGU5ODg1NjU3NDE5ZDIxNzBiYTBkYzRlNWNjNzU0NC4uZjUyZmQ5ZThiMmUwNzE1YmQ2Y2Rj
MDQ0NzU5MTM0NDg2YzIyZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMjAtMDYtMDMgIFBhdmVsIEZlbGRtYW4gPHBhdmVsLmZlbGRtYW5AZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3
b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRX
aXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVkLCBt
b2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAg
ICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5hZGRMb2NhbFJlc291cmNlT3ZlcnJpZGUpOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlbW92ZUxvY2FsUmVzb3VyY2VPdmVycmlkZSk6
CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVk
KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXNwb25zZUludGVyY2Vw
dGVkKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlUmVzb3Vy
Y2VPdmVycmlkZURpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5OZXR3b3JrT2JzZXJ2ZXIucHJv
dG90eXBlLnJlcXVlc3RJbnRlcmNlcHRlZCk6CisKIDIwMjAtMDYtMTAgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRleHQgaW5wdXRz
IHNob3VsZCBub3Qgc3BlbGxjaGVjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlN2Y4NDlkNmY4ODczYjA3NjFiZDg1
YjRjMDM2NTZhOTkwYWE5NWNjLi5iY2RiNDZlM2FlOTIyZTMxYjQzMzBlZmJmY2EyNmQ5Y2YxZjk3
YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTAzICBQYXZlbCBGZWxkbWFu
ICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50
cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVz
dCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4g
SXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0Cisg
ICAgICAgIGNhbiBiZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0
YWdlIGVudW0gY2FuIG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2
YWx1ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKToK
KwogMjAyMC0wNi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIE1lZGlhVXNhZ2VNYW5hZ2VyQ29jb2Egc2hvdWxkIHVzZSBhIGRpZmZl
cmVudCBVU1ZpZGVvVXNhZ2UgaW5pdGlhbGl6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KaW5kZXggZjI0MjVkZDZhZmMw
ZWZiZjFkMTE1MjIwZmQ0MjQ2YWZlMmZiOTJlMS4uNjVhYjIwOTJiMGZmZDBlYWQzZGExZGRjY2Qz
OThkNGY0MTc5ZjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9OZXR3b3JrLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KQEAgLTE1NSw3ICsxNTUsMTMgQEAKICAgICAgICAg
ICAgICJpZCI6ICJOZXR3b3JrU3RhZ2UiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29y
ayByZXF1ZXN0LiIsCi0gICAgICAgICAgICAiZW51bSI6IFsicmVzcG9uc2UiXQorICAgICAgICAg
ICAgImVudW0iOiBbInJlcXVlc3QiLCAicmVzcG9uc2UiXQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAiaWQiOiAiUmVzb3VyY2VFcnJvclR5cGUiLAorICAgICAgICAgICAgInR5
cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3Rh
Z2VzIG9mIGEgbmV0d29yayByZXF1ZXN0LiIsCisgICAgICAgICAgICAiZW51bSI6IFsiR2VuZXJh
bCIsICJBY2Nlc3NDb250cm9sIiwgIkNhbmNlbGxhdGlvbiIsICJUaW1lb3V0Il0KICAgICAgICAg
fQogICAgIF0sCiAgICAgImNvbW1hbmRzIjogWwpAQCAtMjQ0LDEwICsyNTAsMTAgQEAKICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJBZGQgYW4gaW50ZXJjZXB0aW9uLiIsCiAgICAgICAgICAg
ICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlVSTCBwYXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcgaWYg
bm90IHNwZWNpZmllZCBvciBlbXB0eSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGlu
dGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBm
YWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1l
dGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBz
dGFnZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVh
dHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNTYsMTcgKzI2MiwyOSBAQAogICAgICAg
ICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdl
IiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5n
IG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Jl
Z2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9u
LiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29y
a1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50
IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVn
dWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7
CiAgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRDb250aW51ZSIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ29udGludWUgYW4gaW50ZXJjZXB0aW9uIHdpdGggbm8gbW9kaWZpY2F0
aW9ucy4iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIHJlcXVlc3Qgb3Ig
cmVzcG9uc2Ugd2l0aG91dCBtb2RpZmljYXRpb25zLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlw
ZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0
aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3Ig
cmVzcG9uc2UgdG8gY29udGludWUuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBm
b3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51
ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdv
cmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0byBjb250aW51ZS4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgaW50
ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRlZCBvbmUuIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRy
ZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRl
cmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFs
IjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0
cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdo
IG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEsIGJhc2U2NC1lbmNvZGVkLiIgfQog
ICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yODIsNiArMzAwLDI3IEBA
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVz
IHRleHQuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBh
c3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0KICAgICAgICAgICAg
IF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0
UmVxdWVzdFdpdGhSZXNwb25zZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvdmlk
ZSByZXNwb25zZSBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVxdWVzdC4gUmVxdWVzdCBjb21wbGV0ZWx5
IGJ5cGFzc2VzIHRoZSBuZXR3b3JrIGluIHRoaXMgY2FzZSBhbmQgaXMgaW1tZWRpYXRlbHkgZnVs
ZmlsbGVkIHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVx
dWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBO
ZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1
ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTUlN
RSBUeXBlIGZvciB0aGUgZGF0YS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0
dXMiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3Rh
dHVzIGNvZGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0
LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFk
ZXJzIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0UmVxdWVzdFdpdGhFcnJvciIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmFpbCBy
ZXF1ZXN0IHdpdGggZ2l2ZW4gZXJyb3IgdHlwZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1
ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5l
dHdvcmsgcmVxdWVzdCB0byBmYWlsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVy
cm9yVHlwZSIsICIkcmVmIjogIlJlc291cmNlRXJyb3JUeXBlIiwgImRlc2NyaXB0aW9uIjogIkRl
bGl2ZXIgZXJyb3IgcmVhc29uIGZvciB0aGUgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAgICAgICAg
ICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpAQCAtMzU3LDkgKzM5Niwx
NyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNo
ZWRSZXNvdXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAg
ICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
cmVxdWVzdEludGVyY2VwdGVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3
aGVuIEhUVFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3Qg
cmVzcG9uZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+LCA8Y29k
ZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9jb2RlPmAgb3IgPGNvZGU+TmV0d29yay5p
bnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byByZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAor
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxp
ZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVmIjogIlJlcXVlc3QiLCAiZGVzY3JpcHRp
b24iOiAiT3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlz
IGlzIGNvbnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewog
ICAgICAgICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRlcmNlcHRlZCIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2Vw
dGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJj
ZXB0Q29udGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8
L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29u
dGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2Rl
PmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVz
IjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRz
IHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4i
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IGVkNzYzYzExZWI5NTY0NmY2M2VjZjhkZGE3MDhhYjg4NDE0ZjMy
OTAuLjZjYjU5ZWNlZWE0ZWIyZTgxNjVlOTU5NjQ0ODM3NjY1NjExZmE5MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC04MTEsMTAgKzgxMSwxNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhYwogICAgIH0KIH0K
IAotYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
dGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKLSAgICAgICAg
cmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CisgICAg
ICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50
ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmIChhdXRvKiBuZXR3
b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKKyAg
ICAgICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNSw2ICs4MzIsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAo
YXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0Fn
ZW50KCkpCisgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdU
Rk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3Jr
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBjN2I2NmJhMTE1NWQ5MWIzYzVlMGUzMTJlMTRiZDJmZTczMjg2ZDI1Li5kZjkzOTA1YjQ1
YmFlNGM3NGE3MWQxZWFlODljMTI1ZTAxODNhMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKQEAgLTIzNCw4ICsyMzUsMTAg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4pOwpAQCAtNDQyLDggKzQ0NSwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3Vy
Y2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wg
d2lsbEludGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
Jiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTEyNTcs
MTEgKzEyNjIsMTkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJgogICAgIHdpbGxEZXN0cm95Q2Fj
aGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxJbnRlcmNl
cHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgICAgIHJl
dHVybiB3aWxsSW50ZXJjZXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0
dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1
ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyNzMsNiArMTI4NiwxMyBAQCBpbmxp
bmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVy
JiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KCpsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOwor
ICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckZyYW1lKGxvYWRlci5mcmFtZSgpKSkKKyAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXggOTU0YWFmMTIxYTlmYTUwN2Q4
M2JjMTBhZTM3ZGUxZjEyOGY3ZGNmYy4uZTM4ZWYzOThlN2U5YWZjMWUwMWE1NGI5Y2U2OGZjMjM1
OThlOTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMwLDExICszMCwyMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChmcmFtZSwgcmVxdWVzdCk7Cit9CisK
IGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmIGhhbmRsZXIpCit7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNl
cHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50
aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGI2N2U4OWI4
MGI0ZTdhODU4NmNhYzgxYWRlNWQ1OGExYmNiMGQ0MzEuLmEzMmY4NzdlYWEwNGYyN2QxMjEyNzBj
ZmY1YWNjM2IwMzJjMWM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDE0ICszNiwyNyBA
QCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKK2lubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoKmZyYW1lLCByZXF1ZXN0KTsKK30KKwogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSog
ZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CkBAIC01Myw2ICs2NiwxMiBAQCBpbmxpbmUgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lKgogICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KCpmcmFtZSwgcmVzcG9uc2UpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQor
eworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVy
Y2VwdFJlcXVlc3QobG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAg
IEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDJjZjQ5ODhm
MTMyMjJiZTU0MThiMGEyMzExNmI4ZGM5NmIxZjgzZjcuLjFjNWNhN2MyNzJlZmQ5MDc2OWI3MmY0
NWIwMDhmZjc3M2ZlYjliZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SFRUUEhlYWRlck1hcC5oIgpAQCAtNDY1LDYgKzQ2Niw3IEBAIHN0YXRpYyBJbnNwZWN0b3JQYWdl
QWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvCiB7CiAgICAgaWYgKHJlc291cmNlKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFn
ZW50OjppbnNwZWN0b3JSZXNvdXJjZVR5cGUoKnJlc291cmNlKTsKKwogICAgIHJldHVybiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CiB9CiAKQEAgLTg0MCwxMiArODQyLDEzIEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBt
X3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAgICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFy
KCk7CiAKKyAgICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIGNvbnRpbnVlUGVuZGlu
Z1Jlc3BvbnNlcygpOwogCiAgICAgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoZmFsc2UpOwog
fQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwp
Citib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwsIE5l
dHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UpCiB7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwogCkBAIC04NTQsNiArODU3LDExIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Zm9yIChhdXRvJiBpbnRlcmNlcHQgOiBtX2ludGVyY2VwdHMpIHsKKyAgICAgICAgaWYgKGludGVy
Y2VwdC5uZXR3b3JrU3RhZ2UgIT0gbmV0d29ya1N0YWdlKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChpbnRlcmNlcHQudXJsLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCiAgICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9IGludGVyY2VwdC5pc1Jl
Z2V4ID8gQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6UmVnZXggOiBD
b250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpFeGFjdFN0cmluZzsKICAg
ICAgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVJlZ3VsYXJF
eHByZXNzaW9uRm9yU2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGludGVyY2VwdC5jYXNlU2Vu
c2l0aXZlLCBzZWFyY2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJlZ2V4Lm1hdGNoKHVybFN0
cmluZykgIT0gLTEpCkBAIC04NjMsNiArODcxLDEzIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpCit7Cisg
ICAgZm9yIChhdXRvJiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3Rz
LnZhbHVlcygpKQorICAgICAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxS
ZXF1ZXN0KCk7CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7
CiAgICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRl
cmNlcHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI4LDE4ICsxMDQzLDE4IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwog
Ci0gICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlv
bkVuYWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAg
Y29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykK
K3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3Rh
Z2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
b3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAg
ICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3
b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93
biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7
CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3Ry
aW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNDgs
MjEgKzEwNjMsMTggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlv
bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICAgICAgaW50ZXJjZXB0
LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25h
bElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsK
LQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRl
cmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1f
aW50ZXJjZXB0cy5hcHBlbmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCi0gICAgICAgIGVycm9y
U3RyaW5nID0gIkludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVh
ZHkgZXhpc3RzIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcmNlcHQgZm9yIGdpdmVu
IHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIGFscmVhZHkgZXhpc3RzIl9zOwog
fQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJp
bmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1v
dmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChu
ZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdl
U3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtT
dGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5l
dHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3Jr
U3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9z
LCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50
ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNzEsMTkgKzEwODMsMjcgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFMKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5p
c1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVy
Y2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRlcmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0
YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5yZW1vdmVBbGwoaW50ZXJjZXB0
KSkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpbnRlcmNlcHQgZm9yIGdpdmVuIHVy
bCBhbmQgZ2l2ZW4gaXNSZWdleCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBp
bnRlcmNlcHQgZm9yIGdpdmVuIHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIl9z
OwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OndpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCkpOworICAgIHJldHVybiBzaG91
bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KQorICAgICAg
ICB8fCBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25z
ZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1faW50ZXJj
ZXB0aW9uRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNob3Vs
ZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpOwogfQogCiBi
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkxLDcgKzExMTEsMjEgQEAgYm9vbCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51
cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSwgTmV0d29y
a1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9l
bmFibGVkKTsKKyAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKKworICAgIFN0cmlu
ZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChsb2FkZXIuaWRlbnRp
ZmllcigpKTsKKyAgICBpZiAobV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY29udGFpbnMocmVx
dWVzdElkKSkgeworICAgICAgICBoYW5kbGVyKGxvYWRlci5yZXF1ZXN0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNldChyZXF1ZXN0
SWQsIG1ha2VVbmlxdWU8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+KCZsb2FkZXIsIFdURk1vdmUo
aGFuZGxlcikpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVk
KHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3Qo
KSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCkBAIC0xMTExLDE1ICsxMTQ1LDY1IEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VJbnRl
cmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25z
ZSwgbnVsbHB0cikpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IG5ldHdvcmtTdGFnZVN0cmluZykKIHsKLSAgICBhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7Ci0gICAgaWYg
KCFwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVs
cGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtT
dGFnZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29y
a1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNw
b25zZSgpOworICAgIHN3aXRjaCAobmV0d29ya1N0YWdlLnZhbHVlKCkpIHsKKyAgICBjYXNlIE5l
dHdvcmtTdGFnZTo6UmVxdWVzdDoKKyAgICAgICAgaWYgKGF1dG8gcGVuZGluZ0ludGVyY2VwdFJl
cXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCkpCisgICAg
ICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxSZXF1
ZXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
cGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlOgorICAgICAgICBpZiAo
YXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZXMudGFrZShyZXF1ZXN0SWQpKQorICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
LT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3Ig
Z2l2ZW4gcmVxdWVzdElkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
V2l0aFJlcXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBKU09O
OjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBw
ZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElk
KTsKKyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgbG9hZGVyID0gKnBlbmRpbmdSZXF1
ZXN0LT5tX2xvYWRlcjsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGxvYWRlci5yZXF1
ZXN0KCk7CisgICAgaWYgKHVybCkKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgKnVy
bCkpOworICAgIGlmIChtZXRob2QpCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgqbWV0
aG9kKTsKKyAgICBpZiAoaGVhZGVycykgeworICAgICAgICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0
SGVhZGVyczsKKyAgICAgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiAqaGVhZGVycykgewor
ICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICAgICAgaWYgKHZhbHVlLT5h
c1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICAgICAgZXhwbGljaXRIZWFkZXJzLmFk
ZChrZXksIGhlYWRlclZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXF1ZXN0LnNldEhUVFBI
ZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKKyAgICB9CisgICAgaWYgKHBv
c3REYXRhKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgICAgIGlmICgh
YmFzZTY0RGVjb2RlKCpwb3N0RGF0YSwgYnVmZmVyKSkgeworICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBwb3N0RGF0YSJfczsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6
OmNyZWF0ZShidWZmZXIpKTsKKyAgICB9CisgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgaG93IHRv
IGlkZW50aWZ5IHdoZW4gYSByZXF1ZXN0IGhhcyBiZWVuIG92ZXJyaWRkZW4gd2hlbiB3ZSBhZGQg
dGhpcyB0byB0aGUgZnJvbnRlbmQuCisgICAgcGVuZGluZ1JlcXVlc3QtPmNvbnRpbnVlV2l0aFJl
cXVlc3QocmVxdWVzdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0
IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1
c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycykKQEAgLTExNTgsNiArMTI0Miw3IEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVz
cG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisKICAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKICAgICB9IGVsc2UKICAgICAgICAgb3ZlcnJpZGVEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0Zjgo
KS5sZW5ndGgoKSk7CkBAIC0xMTY1LDYgKzEyNTAsOTEgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnMKICAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmQob3ZlcnJpZGVSZXNwb25z
ZSwgb3ZlcnJpZGVEYXRhKTsKIH0KIAordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVy
Y2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29k
ZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc3Rh
dHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0JiBoZWFkZXJzKQoreworICAgIGF1dG8gcGVuZGlu
Z1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7Cisg
ICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIExvYWRlciB3aWxsIGJlIHJldGFpbmVkIGluIHRo
ZSBkaWRSZWNlaXZlUmVzcG9uc2UgbGFtYmRhIGJlbG93LgorICAgIFJlZlB0cjxSZXNvdXJjZUxv
YWRlcj4gbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgIGlmIChs
b2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAi
VW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQi
X3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CisgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRlbnQsIGJ1ZmZlcikpIHsKKyAg
ICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gY29udGVudCJf
czsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50
LnV0ZjgoKS5sZW5ndGgoKSk7CisKKyAgICAvLyBNaW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9y
IC0gcmVwb3J0IGRpZFJlY2VpdmVSZXNwb25zZSAmIGRpZEZpbmlzaExvYWRpbmcuCisgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZShwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXItPnVybCgpLCBt
aW1lVHlwZSwgZGF0YS0+c2l6ZSgpLCBTdHJpbmcoKSk7CisgICAgcmVzcG9uc2Uuc2V0U291cmNl
KFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOworICAgIHJlc3Bv
bnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0YXR1cyk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1
c1RleHQoc3RhdHVzVGV4dCk7CisgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7Cisg
ICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiBoZWFkZXJzKSB7CisgICAgICAgIFN0cmluZyBo
ZWFkZXJWYWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisg
ICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRkKGtleSwgaGVhZGVyVmFsdWUpOworICAgIH0K
KyAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJz
KSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgbG9h
ZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCksIERh
dGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGlu
ZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlU3Ry
aW5nKQoreworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1
ZXN0cy50YWtlKHJlcXVlc3RJZCk7CisgICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAg
ICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdp
dmVuIHJlcXVlc3RJZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGxv
YWRlciA9ICpwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXI7CisgICAgaWYgKGxvYWRlci5yZWFjaGVk
VGVybWluYWxTdGF0ZSgpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBhYm9y
dCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlPihlcnJvclR5cGVTdHJpbmcpOworICAg
IGlmICghZXJyb3JUeXBlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5r
bm93biBlcnJvclR5cGU6ICJfcywgZXJyb3JUeXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgc3dpdGNoIChlcnJvclR5cGUu
dmFsdWUoKSkgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3Vy
Y2VFcnJvclR5cGU6OkdlbmVyYWw6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXIudXJsKCksICJSZXF1ZXN0IGludGVyY2Vw
dGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6
QWNjZXNzQ29udHJvbDoKKyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci51cmwoKSwgIkFjY2VzcyBkZW5pZWQiX3MsIFJlc291
cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpDYW5jZWxs
YXRpb246CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCBsb2FkZXIudXJsKCksICJSZXF1ZXN0IGNhbmNlbGVkIl9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0OgorICAg
ICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
bG9hZGVyLnVybCgpLCAiUmVxdWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6
OlRpbWVvdXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgbG9hZGVyLmRpZEZhaWwoZXJy
b3IpOworfQorCiBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikKQEAgLTExODEsNiArMTM1MSw3IEBA
IFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRl
eHREZWNvZGVyKGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Rl
eHRNSU1FVHlwZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUobWltZVR5cGUsICJVVEYtOCIpOworCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6
OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKSB7CiAgICAgICAgIGF1dG8gZGVjb2RlciA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIl9zKTsKICAgICAgICAgZGVj
b2Rlci0+dXNlTGVuaWVudFhNTERlY29kaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBiZmQxMzFl
OWI1ODU2Yzg0ZGE3NzI0ODA1ZTcxMzk3YjdjNzQ4NmE5Li4wM2I0Y2JhNDUyMDFhNWRmMDNkZDZm
MjhkOGZmMzA1NjYxNDY2MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTg4LDEwICs4OCwxMyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBzZXJpYWxpemVkQ2VydGlmaWNhdGUpIGZp
bmFsOwogICAgIHZvaWQgcmVzb2x2ZVdlYlNvY2tldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIGZpbmFsOwogICAgIHZvaWQgc2V0
SW50ZXJjZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgZmluYWw7Ci0g
ICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgY29uc3QgU3Ry
aW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlSW50ZXJjZXB0
aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5z
aXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3Ry
aW5nKSBmaW5hbDsKLSAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQpIGZpbmFsOworICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdl
U3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4KSBm
aW5hbDsKKyAgICB2b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCog
Y2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCkgZmluYWw7CisgICAgdm9pZCBpbnRl
cmNlcHRDb250aW51ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRX
aXRoUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcqIHVybCwgY29uc3QgU3RyaW5nKiBtZXRob2QsIGNvbnN0IEpTT046Ok9iamVjdCogaGVh
ZGVycywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkgZmluYWw7CiAgICAgdm9pZCBpbnRlcmNlcHRX
aXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5
cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpT
T046Ok9iamVjdCogaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVj
dCYgaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JU
eXBlKSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQg
d2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAgLTExOCw5ICsxMjEsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgbWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyJik7CiAgICAgdm9pZCBzZXRJ
bml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9u
KERvY3VtZW50Jik7Ci0gICAgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CisgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lk
IGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1
ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKICAgICB2
b2lkIHNlYXJjaEluUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpT
ZWFyY2hNYXRjaD4+Jik7CkBAIC0xNDAsNyArMTQ1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAKLSAgICBib29sIHNob3Vs
ZEludGVyY2VwdChVUkwpOworICAgIHVzaW5nIE5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZTsKKyAgICBib29sIHNob3VsZEludGVyY2VwdChV
UkwsIE5ldHdvcmtTdGFnZSk7CisgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwog
ICAgIHZvaWQgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAKICAgICBXZWJTb2NrZXQqIHdl
YlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CkBAIC0xNTMsNiAr
MTYwLDMxIEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAKKyAgICBjbGFz
cyBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgcHVibGljOgorICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdChSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+IGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIDogbV9sb2Fk
ZXIobG9hZGVyKQorICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQorICAgICAgICB7IH0KKworICAgICAgICB2b2lkIGNvbnRpbnVlV2l0
aE9yaWdpbmFsUmVxdWVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9sb2FkZXIt
PnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFu
ZGxlcihtX2xvYWRlci0+cmVxdWVzdCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY29u
dGludWVXaXRoUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIocmVxdWVzdCk7CisgICAgICAgIH0K
KworICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCgpID0gZGVmYXVsdDsKKyAgICAgICAg
UmVmUHRyPFJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICB9OworCiAgICAgY2xhc3MgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlIHsKICAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKTsKICAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yMDQsMTUgKzIzNiwxOCBAQCBwcml2YXRlOgogICAg
ICAgICBTdHJpbmcgdXJsOwogICAgICAgICBib29sIGNhc2VTZW5zaXRpdmUgeyB0cnVlIH07CiAg
ICAgICAgIGJvb2wgaXNSZWdleCB7IGZhbHNlIH07CisgICAgICAgIE5ldHdvcmtTdGFnZSBuZXR3
b3JrU3RhZ2UgeyBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlIH07CiAKICAgICAgICAgaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJbnRlcmNlcHQmIG90aGVyKSBjb25zdAogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gdXJsID09IG90aGVyLnVybAogICAgICAgICAgICAgICAgICYmIGNh
c2VTZW5zaXRpdmUgPT0gb3RoZXIuY2FzZVNlbnNpdGl2ZQotICAgICAgICAgICAgICAgICYmIGlz
UmVnZXggPT0gb3RoZXIuaXNSZWdleDsKKyAgICAgICAgICAgICAgICAmJiBpc1JlZ2V4ID09IG90
aGVyLmlzUmVnZXgKKyAgICAgICAgICAgICAgICAmJiBuZXR3b3JrU3RhZ2UgPT0gb3RoZXIubmV0
d29ya1N0YWdlOwogICAgICAgICB9CiAgICAgfTsKICAgICBWZWN0b3I8SW50ZXJjZXB0PiBtX2lu
dGVyY2VwdHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdD4+IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzOwogICAgIEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlPj4gbV9wZW5k
aW5nSW50ZXJjZXB0UmVzcG9uc2VzOwogCiAgICAgLy8gRklYTUU6IEluc3BlY3Rvck5ldHdvcmtB
Z2VudCBzaG91bGQgbm90IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApp
bmRleCA3ODczYmY5OWJkMjM0OTY2NDhjYmMzNDQ3MDQ4ODE4MjE1ODk0YzgxLi4zYTcxMTI3N2E4
YWE3YzRmMDM1OTBjMmZlNTc4M2EyNGFmODJhNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg0MSw3ICs4NDEs
NyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQogCiAgICAgcmVxdWVzdC51cGRhdGVSZWZlcnJl
clBvbGljeShkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA6IFJlZmVy
cmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdCgmZnJhbWUsIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJ
bnRlcmNlcHQoJmZyYW1lLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmVx
dWVzdC5zZXRDYWNoaW5nUG9saWN5KENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZyk7CiAK
ICAgICBhdXRvJiBwYWdlID0gKmZyYW1lLnBhZ2UoKTsKQEAgLTE0MzEsNyArMTQzMSw3IEBAIFZl
Y3RvcjxSZWY8U1ZHSW1hZ2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsQ2FjaGVkU1ZHSW1h
Z2VzKCkgY29uc3QKIAogUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6
OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICBpZiAo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChmcmFtZSgpLCBy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsSW50ZXJjZXB0KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksICJJbnNw
ZWN0b3IgaW50ZXJjZXB0Il9zIH0pOwogCiAgICAgaWYgKHJlcXVlc3QuY2hhcnNldCgpLmlzRW1w
dHkoKSAmJiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0IHx8IHR5cGUgPT0g
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3
b3JrTWFuYWdlci5qcwppbmRleCA3ZGUzY2QyNTM5ZmMzZTZmOGI2Njk3MjQzYTM3ODk1N2E1NTJh
NTQ1Li5hMzM4NzM0NDdjOTBlYzY0M2JlZTMzMzE1YjNjOTJhZDFmYmZiYzA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3Jr
TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwpAQCAtMTU5LDkgKzE1OSw5IEBAIFdJLk5ldHdvcmtN
YW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUuZGlzYWJsZWQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmlu
dm9rZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNlT3Zl
cnJpZGUudXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JC
YWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2Fz
ZVNlbnNpdGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJl
c291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3
b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNw
b25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQpAQCAtMzY0LDcgKzM2NCw3IEBAIFdJLk5ldHdvcmtNYW5hZ2Vy
ID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAg
ICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2FzZVNl
bnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAg
ICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAg
ICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdv
cmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2Vu
ZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsKIAog
ICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLmFkZEludGVy
Y2VwdGlvbiBkaWQgbm90IGV4aXN0LgpAQCAtMzk3LDcgKzM5Nyw3IEBAIFdJLk5ldHdvcmtNYW5h
Z2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAg
ICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2Fz
ZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAg
ICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAg
ICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5l
dHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFj
a2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsK
IAogICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLnJlbW92
ZUludGVyY2VwdGlvbiBkaWQgbm90IGV4aXN0LgpAQCAtOTA4LDEyICs5MDgsMjEgQEAgV0kuTmV0
d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmRlbGV0ZShyZXF1ZXN0SWRl
bnRpZmllcik7CiAgICAgfQogCisgICAgcmVxdWVzdEludGVyY2VwdGVkKHRhcmdldCwgcmVxdWVz
dElkLCByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGFkZCByZXF1ZXN0IGludGVy
Y2VwdGlvbiBzdXBwb3J0IHRvIHRoZSBmcm9udGVuZC4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVk
LCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9KTsKKyAgICB9CisKICAgICByZXNwb25zZUlu
dGVyY2VwdGVkKHRhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSkKICAgICB7CiAgICAgICAgIGxl
dCB1cmwgPSBXSS51cmxXaXRob3V0RnJhZ21lbnQocmVzcG9uc2UudXJsKTsKICAgICAgICAgbGV0
IGxvY2FsUmVzb3VyY2VPdmVycmlkZSA9IHRoaXMubG9jYWxSZXNvdXJjZU92ZXJyaWRlRm9yVVJM
KHVybCk7CiAgICAgICAgIGlmICghbG9jYWxSZXNvdXJjZU92ZXJyaWRlIHx8IGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS5kaXNhYmxlZCkgewotICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRDb250aW51ZShyZXF1ZXN0SWQpOworICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtB
Z2VudC5pbnRlcmNlcHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAgIHJlcXVlc3RJ
ZCwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsu
TmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMTM3Niw3ICsxMzg1LDcgQEAgV0kuTmV0d29ya01hbmFnZXIg
PSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdXJs
OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTog
bG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgIGlzUmVn
ZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgbmV0d29ya1N0
YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2Us
CisgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlc3BvbnNlLAogICAgICAgICB9OwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyAxMy4wKTogTmV0d29yay5hZGRJbnRlcmNlcHRpb24gLyBOZXR3b3JrLnJlbW92ZUludGVy
Y2VwdGlvbiBkaWQgbm90IGV4aXN0LgpAQCAtMTQzMiw0ICsxNDQxLDUgQEAgV0kuTmV0d29ya01h
bmFnZXIuRXZlbnQgPSB7CiAgICAgQm9vdHN0cmFwU2NyaXB0RGVzdHJveWVkOiAibmV0d29yay1t
YW5hZ2VyLWJvb3RzdHJhcC1zY3JpcHQtZGVzdHJveWVkIiwKICAgICBMb2NhbFJlc291cmNlT3Zl
cnJpZGVBZGRlZDogIm5ldHdvcmstbWFuYWdlci1sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1hZGRl
ZCIsCiAgICAgTG9jYWxSZXNvdXJjZU92ZXJyaWRlUmVtb3ZlZDogIm5ldHdvcmstbWFuYWdlci1s
b2NhbC1yZXNvdXJjZS1vdmVycmlkZS1yZW1vdmVkIiwKKyAgICBSZXF1ZXN0SW50ZXJjZXB0ZWQ6
ICJuZXR3b3JrLW1hbmFnZXItcmVxdWVzdC1pbnRlcmNlcHRlZCIKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3
b3JrT2JzZXJ2ZXIuanMKaW5kZXggNTljMjljOWEzODRiMDQ3OGRkOGQ2ZDBjZjU5MjhiNjI5ODE4
MDBhYS4uZmU4ODI5YTcxYmZkMGVlZDg1NmI0MWMzYWFlY2U2YWU3ZjFhMTRkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09i
c2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL05ldHdvcmtPYnNlcnZlci5qcwpAQCAtMTA4LDYgKzEwOCwxMSBAQCBXSS5OZXR3b3JrT2Jz
ZXJ2ZXIgPSBjbGFzcyBOZXR3b3JrT2JzZXJ2ZXIgZXh0ZW5kcyBJbnNwZWN0b3JCYWNrZW5kLkRp
c3BhdGNoZXIKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KICAgICB9CiAKKyAg
ICByZXF1ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCByZXF1ZXN0KQorICAgIHsKKyAgICAgICAg
V0kubmV0d29ya01hbmFnZXIucmVxdWVzdEludGVyY2VwdGVkKHRoaXMuX3RhcmdldCwgcmVxdWVz
dElkLCByZXF1ZXN0KTsKKyAgICB9CisKICAgICByZXNwb25zZUludGVyY2VwdGVkKHJlcXVlc3RJ
ZCwgcmVzcG9uc2UpCiAgICAgewogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNwb25zZUlu
dGVyY2VwdGVkKHRoaXMuX3RhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
aW5kZXggMGRkYjM1MzM0NDM4Nzg0ZmIyMTZmZGY3MTA4NDI5NzI2ZjJjNjY2Ny4uZmFhMWUxNjBm
NzQ4Y2IyZTM1YzBkNjdkMDE3NjliYWUzODJjZjg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNTgsNiAr
NTgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVsZW1lbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtU3RyYXRlZ2llcy5oPgpAQCAtMjI4LDYgKzIyOSwxMyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRS
ZXNvdQogCiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNl
TG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZ
X1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1
bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIik7CisKKyAgICAgICAgaWYgKCFyZXNvdXJjZUxv
YWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgJiYgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KHJlc291
cmNlTG9hZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKKyAgICAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChyZXNv
dXJjZUxvYWRlciwgW3RoaXMsIHByb3RlY3RlZFJlc291cmNlTG9hZGVyID0gbWFrZVJlZlB0cigm
cmVzb3VyY2VMb2FkZXIpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIHJlc291cmNlXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpIHsKKyAgICAgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3Mo
KnByb3RlY3RlZFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCB0cmFja2luZ1BhcmFtZXRlcnMsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lKHJlc291cmNlKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VM
b2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGlt
ZShyZXNvdXJjZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUwZDQxNWFjMzJl
ODcyNGJkZGU0ZjRmNTcxZTFiY2NjZWI4ZWZiM2IuLjYxY2U5NDQ5ODU2ZjFhMTQ0OTExNDVkNGFj
NjNkYzMyNjMyZWFjMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwg
RmVsZG1hbiA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogaW50cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsg
cmVxdWVzdCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsKKyAgICAgICAgcHJvdG9jb2wgZG9t
YWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRo
YXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3
b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9u
c2UnIHZhbHVlcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LWNvbnRpbnVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1y
ZXF1ZXN0LWZyYWdtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1mcmFnbWVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0
aC1yZXNwb25zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3Bv
bnNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJj
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291
cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVz
cG9uc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0
LWVjaG8ucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNl
cHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qczoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2Vw
dGVkLmpzb246IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAyMC0wNi0xMSAgT3Jpb2wgQnJ1ZmF1ICA8b2JydWZhdUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtjc3MtZ3JpZF0gUmVpbXBvcnQgV1BUIHRlc3RzIHJlbW92ZWQgaW4gcjI2Mjgw
OQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjFkMzhiODcxZDUxNjYwNmNjMTY1ODA3YTViYmQzNmUwMDY1YjI0
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NiBAQAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IEFib3J0
RXJyb3I6IEZldGNoIGlzIGFib3J0ZWQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBBYm9ydEVycm9yOiBGZXRjaCBpcyBhYm9ydGVkCitUZXN0IHJlcXVlc3Qg
aW50ZXJjZXB0aW9uIG9mIHRoZSBhYm9ydGVkIHJlcXVlc3QuCisKKworPT0gUnVubmluZyB0ZXN0
IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuQWJvcnRlZAor
VHJpZ2dlcmluZyBsb2FkLi4uCitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCitF
cnJvcjogVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9j
ZXNzZWQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdp
dGhFcnJvci5BYm9ydGVkCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1BBU1M6IFNob3VsZCBwcm9kdWNl
IGFuIGV4Y2VwdGlvbi4KK0Vycm9yOiBVbmFibGUgdG8gYWJvcnQgcmVxdWVzdCwgaXQgaGFzIGFs
cmVhZHkgYmVlbiBwcm9jZXNzZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJl
cXVlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGRmM2IyOTQ5MDNlZTZiNDFhOTU1OWJmYTJhYWNkOTc5
YzRlYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKQEAgLTAsMCArMSw3NyBA
QAorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGZldGNoQW5kQWJvcnQoKSB7CisgICAgbGV0
IHVybCA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L292ZXJyaWRlLnR4dCI7CisgICAgbGV0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVy
KCk7CisgICAgbGV0IHsgc2lnbmFsIH0gPSBjb250cm9sbGVyOworICAgIGZldGNoKHVybCwgeyBz
aWduYWwgfSk7CisgICAgY29udHJvbGxlci5hYm9ydCgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIpOworCisgICAgTmV0d29ya0FnZW50LmFk
ZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4dCIsCisgICAgICAgIHN0
YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwK
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5BYm9ydGVkIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGZ1bGZpbGxzIGFib3J0ZWQg
cmVxdWVzdCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQgW3JlcXVlc3RJ
bnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBX
SS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVl
c3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZShgZmV0Y2hBbmRBYm9ydCgpYCksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAg
YXdhaXQgSW5zcGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4geworICAgICAg
ICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNl
Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdEludGVyY2Vw
dGVkRXZlbnQuZGF0YS5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNw
ZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgY29udGVudDogIkZBSUwiLAorICAgICAgICAgICAgICAgICAgICBiYXNlNjRF
bmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWlu
IiwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICAgICAgICAg
IHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LAorICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdFdpdGhFcnJvci5BYm9ydGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyBy
ZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IHJlamVjdHMgYWJvcnRlZCByZXF1ZXN0IiwKKyAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2Vy
aW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVkRXZlbnRd
ID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2Vy
LmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkKSwK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBmZXRjaEFuZEFi
b3J0KClgKSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXdhaXQg
TmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IuaW52b2tlKHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudC5kYXRhLnJlcXVl
c3RJZCwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlOiBJbnNwZWN0b3JCYWNrZW5kLkVu
dW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5HZW5lcmFsLAorICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9mIHRoZSBhYm9ydGVk
IHJlcXVlc3QuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzI3NGM1
NjYyNjUyMTU2MDMwYTJkYTZjYThjM2QzOWY0NGY3OTI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1j
b250aW51ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCByZXF1ZXN0IGludGVy
Y2VwdGlvbiB0aGF0IGNvbnRpbnVlcyByZXF1ZXN0LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogTmV0d29yay5pbnRlcmNlcHRDb250aW51ZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25z
ZSBjb250ZW50OgorZnVuY3Rpb24gbXlTY3JpcHRKUygpIHt9CisKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZVdyb25nU3RhZ2UKK1RyaWdn
ZXJpbmcgbG9hZC4uLgorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorRXJyb3I6
IE1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZAor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVl
V3JvbmdJZAorVHJpZ2dlcmluZyBsb2FkLi4uCitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNl
cHRpb24uCitFcnJvcjogTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZl
biByZXF1ZXN0SWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU4OTRjNDk0OTQ5MTJlOTcxZjc3NDhiOGViZDBkNDQ2YTBmOWZmYTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkKK3sKKyAgICBsZXQgcmVzcG9uc2Ug
PSBhd2FpdCBmZXRjaCh1cmwpOworICAgIHJldHVybiBhd2FpdCByZXNwb25zZS50ZXh0KCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3Jl
YXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIpOworICAgIAorICAgIE5l
dHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zY3JpcHQuanMiLAor
ICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdl
LlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWUiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlRlc3RzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQgY29udGludWVzIiwKKyAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRDb250aW51ZSA9IChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7IHRhcmdldCwgcmVxdWVzdElkLCByZXF1
ZXN0IH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNl
cHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAg
ICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3
b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29y
a01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAg
ICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBSdW50aW1lQWdlbnQuZXZhbHVhdGUoImZldGNo
RGF0YSgncmVzb3VyY2VzL3NjcmlwdC5qcycpIik7CisgICAgICAgICAgICByZXNwb25zZSA9IGF3
YWl0IFJ1bnRpbWVBZ2VudC5hd2FpdFByb21pc2UocmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0
cnVlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXNwb25zZSBjb250ZW50OiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cocmVzcG9uc2UucmVzdWx0LnZhbHVlKTsK
KyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTmV0
d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZVdyb25nU3RhZ2UiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQgY29udGlu
dWVzIHdpdGggdGhlIHdyb25nIHN0YWdlIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAg
ICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwor
ICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01h
bmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkKSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBmZXRjaERhdGEoJ3Jlc291cmNlcy9zY3JpcHQuanMnKWAp
LAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXhw
ZWN0RXhjZXB0aW9uKGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgICAgICBhd2FpdCBOZXR3b3Jr
QWdlbnQuaW50ZXJjZXB0Q29udGludWUuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudC5kYXRhLnJlcXVlc3RJZCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWVXcm9uZ0lkIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyB3aXRo
IHRoZSB3cm9uZyBzdGFnZSIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQg
W3JlcXVlc3RJbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAg
ICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2
ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgZmV0Y2hEYXRhKCdyZXNvdXJjZXMvc2NyaXB0LmpzJylgKSwKKyAgICAg
ICAgICAgIF0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4Y2Vw
dGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXdhaXQgTmV0d29ya0FnZW50Lmlu
dGVyY2VwdENvbnRpbnVlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDog
Indyb25nSWQiLAorICAgICAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCBjb250aW51ZXMgcmVx
dWVzdC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2MWIwOGQ5NjFk
ZWI5NzE5ZDgwZmI5NzJhNjdmNWVlMzAwM2UyNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdt
ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0
aW9uIGluIGNvbWJpbmF0aW9uIHdpdGggZnJhZ21lbnRzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBz
dWl0ZTogTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6
IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxXaXRob3V0RnJhZ21lbnRCYXNlbGluZQorVHJp
Z2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz9vbmUK
K1Jlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz9vbmUKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxXaXRoRnJhZ21lbnRCYXNlbGlu
ZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNz
cz90d28jZnJhZ21lbnQKK1Jlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz90d28j
ZnJhZ21lbnQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dC5VUkxBZGRGcmFnbWVudAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IFVSTDogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNz
cworUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzI2ZyYWdtZW50CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMUmVtb3ZlRnJhZ21lbnQKK1RyaWdnZXJpbmcg
bG9hZC4uLgorUmVxdWVzdCBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MjZnJhZ21lbnQKK1Jlc3BvbnNlIFVSTDogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0
LmNzcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgwYzI3YTdkMTAyNzZiZmJmYzAxMTZhN2M1ZDYxNDRjYWFlNmUxMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQuaHRtbApAQCAtMCwwICsxLDEwMCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
CitmdW5jdGlvbiBsb2FkU3VicmVzb3VyY2UodXJsKQoreworICAgIGxldCBsaW5rID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGluayIpOworICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOwor
ICAgIGxpbmsuaHJlZiA9IHVybDsKKyAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmsp
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKworICAg
IE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0
LmNzcyIsCisgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3
b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICB9KTsKKworICAgIGZ1bmN0aW9uIGFkZEJhc2VsaW5lVGVz
dENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9ufSkgeworICAgICAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24s
CisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgW3JlcXVl
c3RFdmVudCwgcmVzcG9uc2VFdmVudCwgZmV0Y2hSZXNwb25zZV0gPSBhd2FpdCBQcm9taXNlLmFs
bChbCisgICAgICAgICAgICAgICAgICAgIFdJLkZyYW1lLmF3YWl0RXZlbnQoV0kuRnJhbWUuRXZl
bnQuUmVzb3VyY2VXYXNBZGRlZCksCisgICAgICAgICAgICAgICAgICAgIFdJLlJlc291cmNlLmF3
YWl0RXZlbnQoV0kuUmVzb3VyY2UuRXZlbnQuUmVzcG9uc2VSZWNlaXZlZCksCisgICAgICAgICAg
ICAgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdCBVUkw6
ICIgKyByZXF1ZXN0RXZlbnQuZGF0YS5yZXNvdXJjZS51cmwpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJSZXNwb25zZSBVUkw6ICIgKyByZXNwb25zZUV2ZW50LnRhcmdldC51
cmwpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisgICAgZnVuY3Rpb24gYWRk
VGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9uLCB1cmx9KSB7CisgICAgICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxl
dCBbcmVxdWVzdEV2ZW50LCByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudCwgZmV0Y2hSZXNwb25zZV0g
PSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJLkZyYW1lLmF3YWl0
RXZlbnQoV0kuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCksCisgICAgICAgICAgICAgICAg
ICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQu
UmVxdWVzdEludGVyY2VwdGVkKSwKKyAgICAgICAgICAgICAgICAgICAgUnVudGltZUFnZW50LmV2
YWx1YXRlKGV4cHJlc3Npb24pLAorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0IFVSTDogIiArIHJlcXVlc3RFdmVudC5kYXRhLnJl
c291cmNlLnVybCk7CisKKyAgICAgICAgICAgICAgICBsZXQgW3Jlc3BvbnNlRXZlbnQsIGludGVy
Y2VwdFJlc3BvbnNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICAgICAg
V0kuUmVzb3VyY2UuYXdhaXRFdmVudChXSS5SZXNvdXJjZS5FdmVudC5SZXNwb25zZVJlY2VpdmVk
KSwKKyAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0
Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRl
cmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgdXJs
LAorICAgICAgICAgICAgICAgICAgICB9KSwKKyAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVzcG9uc2UgVVJMOiAiICsgcmVzcG9uc2VFdmVu
dC50YXJnZXQudXJsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisKKyAg
ICBhZGRCYXNlbGluZVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdC5VUkxXaXRob3V0RnJhZ21lbnRCYXNlbGluZSIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiVGVzdHMgcmVzcG9uc2UgdXJsIHdpdGhvdXQgZnJhZ21lbnQgLSBiYXNlbGluZSIsCisgICAg
ICAgIGV4cHJlc3Npb246ICJsb2FkU3VicmVzb3VyY2UoJ3Jlc291cmNlcy9zdHlsZXNoZWV0LXdp
dGgtc291cmNlbWFwLmNzcz9vbmUnKSIsCisgICAgfSk7CisKKyAgICBhZGRCYXNlbGluZVRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxXaXRoRnJh
Z21lbnRCYXNlbGluZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVzcG9uc2UgdXJs
IHdpdGggZnJhZ21lbnQgLSBiYXNlbGluZSIsCisgICAgICAgIGV4cHJlc3Npb246ICJsb2FkU3Vi
cmVzb3VyY2UoJ3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz90d28jZnJh
Z21lbnQnKSIsCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMQWRkRnJhZ21lbnQiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRoIFVSTCB3aXRoIGZy
YWdtZW50IiwKKyAgICAgICAgZXhwcmVzc2lvbjogImxvYWRTdWJyZXNvdXJjZSgncmVzb3VyY2Vz
L3N0eWxlc2hlZXQuY3NzJykiLAorICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzI2ZyYWdtZW50IiwKKyAg
ICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdC5VUkxSZW1vdmVGcmFnbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVz
dHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHRoYXQgcmVtb3ZlcyBmcmFnbWVudCIsCisg
ICAgICAgIGV4cHJlc3Npb246ICJsb2FkU3VicmVzb3VyY2UoJ3Jlc291cmNlcy9zdHlsZXNoZWV0
LmNzcyNmcmFnbWVudCcpIiwKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIsCisgICAgfSk7CisKKyAg
ICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBp
biBjb21iaW5hdGlvbiB3aXRoIGZyYWdtZW50cy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjEyNTkwNDgzNWVmMTBiNmMwNjAzNGY2MTVmM2RlZjEx
OGY5ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKK0FMRVJUOiBPUklHSU5BTCBIVE1MIENPTlRFTlQKK0FMRVJUOiBSRVBM
QUNFRCBIVE1MIENPTlRFTlQKK092ZXJyaWRkZW4gcGFnZSBjb250ZW50CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIxMjU5MDQ4MzVlZjEw
YjZjMDYwMzRmNjE1ZjNkZWYxMThmOWVhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNv
dXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK0FMRVJUOiBP
UklHSU5BTCBIVE1MIENPTlRFTlQKK0FMRVJUOiBSRVBMQUNFRCBIVE1MIENPTlRFTlQKK092ZXJy
aWRkZW4gcGFnZSBjb250ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jYTAxMGRlY2FmZTkxNDJhN2U4ZDJhZjc5MjU0YWE4YjI2MjFkN2M5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApAQCAtMCwwICsxLDQ0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25z
ZSIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSB3aXRoIHJlc3BvbnNlIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJNYWluIHJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gb24gbmV4
dCBwYWdlIGxvYWQgYW5kIGZ1bGZpbGxzIHJlcXVlc3QiLAorICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgYXdhaXQgTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2Uo
eworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRt
bCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3Jr
Lk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJ
Lm5ldHdvcmtNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2Vy
LkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
bGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAg
ICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLmludm9rZSh7
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgbWlt
ZVR5cGU6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgPCFET0NU
WVBFIGh0bWw+PGh0bWw+PGhlYWQ+PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3It
dGVzdC5qcyI+PC9gK2BzY3JpcHQ+PC9oZWFkPjxib2R5PjxwPk92ZXJyaWRkZW4gcGFnZSBjb250
ZW50PC9wPjxzY3JpcHQ+YWxlcnQoIlJFUExBQ0VEIEhUTUwgQ09OVEVOVCIpOyBUZXN0UGFnZS5j
b21wbGV0ZVRlc3QoKTs8L2ArYHNjcmlwdD48L2JvZHk+PC9odG1sPmAsCisgICAgICAgICAgICAg
ICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6
IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAg
ICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2Fj
aGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50
ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgbWFpbiByZXNvdXJjZSBsb2FkIHdpdGggcmVzcG9u
c2UuPC9wPgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRNTCBDT05URU5UIik7PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
bWFpbi1yZXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5MDcxNzk2OWFkNTI2NmIyODg2NmE1YmJm
NDBjZWNkNzNiNjM3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbApA
QCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3Vp
dGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3QiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NYWluUmVzb3VyY2UiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIk1haW4gcmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiBvbiBuZXh0IHBhZ2Ug
bG9hZCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCBOZXR3b3Jr
QWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1h
aW4tcmVzb3VyY2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tl
bmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJ
Lk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5k
YXRhOworICAgICAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5p
bnZva2UoeworICAgICAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1w
YWdlLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVz
dC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6
IHRydWV9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5k
RmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5nIHRoZSBtYWluIHJl
c291cmNlIGxvYWQuPC9wPgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRNTCBDT05URU5UIik7
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2FmOWY2
Y2RiMjk1ZTBiNTJhMzc3NmRkNzU4YmQzOWMxOGQ5YzVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgzIEBACitUZXN0IHJlcXVlc3QgaW50
ZXJjZXB0aW9uIGFsdGVyaW5nIHJlcXVlc3QgcHJvcGVydGllcy4KKworCis9PSBSdW5uaW5nIHRl
c3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kCitUcmlnZ2VyaW5nIGxvYWQuLi4K
K1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2lu
dGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDog
UE9TVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6IDAKKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2REZWxldGUKK1Ry
aWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNo
by5waHAKKyAgTWV0aG9kOiBERUxFVEUKKyAgUmVxdWVzdCBIZWFkZXJzOgorICAgIENvbnRlbnQt
TGVuZ3RoOiAwCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVl
c3QuTWV0aG9kTm9uU3RhbmRhcmQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxz
OgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhw
CisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBOT05TVEFOREFSRAorICBS
ZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6IDAKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2RFbXB0eQorVHJpZ2dlcmluZyBs
b2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBN
ZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3Qg
ZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1l
Y2hvLnBocD9uZXdVUkw9dmFsdWUKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9uZXdVUkw9
dmFsdWUKKyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFkZXJzOgorICBHZXQ6CisgICAgbmV3
VVJMOiB2YWx1ZQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LlVSTEZyYWdtZW50CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAg
VVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBS
ZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogR0VUCisgIFJlcXVlc3QgSGVhZGVy
czoKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxF
bXB0eQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFRoZSBVUkwgY2Fu
4oCZdCBiZSBzaG93bgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LkhlYWRlcnMKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBV
Ukk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJl
c3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFkZXJz
OgorICAgIFgtVmFsdWU6IG92ZXJyaWRkZW4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdC5Qb3N0RGF0YQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0
IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQt
ZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IFBPU1QKKyAg
UmVxdWVzdCBIZWFkZXJzOgorICAgIENvbnRlbnQtTGVuZ3RoOiAxNgorICAgIENvbnRlbnQtVHlw
ZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCisgIFBvc3Q6CisgICAgdmFsdWU6
IG92ZXJyaWRkZW4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRp
ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMDhhNWRkZmE5NTQ5ZTkwZjZkZWE1NzQwNzBjZmZiYmUwZDE3
YzZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwKQEAgLTAsMCArMSwxODEg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSh1cmwpCit7CisgICAgdHJ5IHsK
KyAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTsKKyAgICAgICAgLy8gRXZh
bCB0byBhY2NlcHQgdHJhaWxpbmcgY29tYSBKU09OLgorICAgICAgICBsZXQgZGF0YSA9IGV2YWwo
IigiICsgKGF3YWl0IHJlc3BvbnNlLnRleHQoKSB8fCAie30iKSArICIpIik7CisgICAgICAgIGRh
dGEucmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmw7CisgICAgICAgIHJldHVybiBkYXRhOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGUubWVzc2FnZSB9OworICAg
IH0KK30KKworYXN5bmMgZnVuY3Rpb24gcG9zdERhdGEodXJsKQoreworICAgIGxldCByZXNwb25z
ZSA9IGF3YWl0IGZldGNoKHVybCwgeworICAgICAgICBtZXRob2Q6ICJQT1NUIiwKKyAgICAgICAg
aGVhZGVyczogeworICAgICAgICAgICAgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi94LXd3
dy1mb3JtLXVybGVuY29kZWQiLAorICAgICAgICB9LAorICAgICAgICBib2R5OiAidmFsdWU9b3Jp
Z2luYWwiLAorICAgIH0pOworICAgIC8vIEV2YWwgdG8gYWNjZXB0IHRyYWlsaW5nIGNvbWEgSlNP
Ti4KKyAgICBsZXQgZGF0YSA9IGV2YWwoIigiICsgKGF3YWl0IHJlc3BvbnNlLnRleHQoKSB8fCAi
e30iKSArICIpIik7CisgICAgZGF0YS5yZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybDsKKyAgICBy
ZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5z
cGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0
Iik7CisKKyAgICBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAg
IHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
aW50ZXJjZXB0LWVjaG8ucGhwIiwKKyAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51
bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgIH0pOworCisgICAgZnVuY3Rpb24g
bG9nUmVxdWVzdChyZXN1bHQpIHsKKyAgICAgICAgbGV0IHJlcXVlc3QgPSByZXN1bHQudmFsdWU7
CisgICAgICAgIGlmIChyZXF1ZXN0LmVycm9yKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhgICAke3JlcXVlc3QuZXJyb3J9YCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBVUkk6ICR7cmVxdWVzdC51cml9YCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFJlc3BvbnNlIFVSTDogJHtyZXF1ZXN0LnJl
c3BvbnNlVVJMfWApOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBNZXRob2Q6ICR7cmVx
dWVzdC5tZXRob2R9YCk7CisgICAgICAgIGxldCBoZWFkZXJLZXlzID0gT2JqZWN0LmtleXMocmVx
dWVzdC5oZWFkZXJzKTsKKyAgICAgICAgaWYgKGhlYWRlcktleXMubGVuZ3RoKSB7CisgICAgICAg
ICAgICBoZWFkZXJLZXlzLnNvcnQoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAg
IFJlcXVlc3QgSGVhZGVyczpgKTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgaGVhZGVy
S2V5cykgeworICAgICAgICAgICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJYLSIpICYmICFu
YW1lLnN0YXJ0c1dpdGgoIkNvbnRlbnQtIikpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcXVlc3QuaGVhZGVyc1tuYW1lXTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IGdldEtleXMgPSBPYmplY3Qu
a2V5cyhyZXF1ZXN0LmdldCk7CisgICAgICAgIGlmIChnZXRLZXlzLmxlbmd0aCkgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiAgR2V0OiIpOworICAgICAgICAgICAgZ2V0S2V5cy5z
b3J0KCk7CisgICAgICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGdldEtleXMpIHsKKyAgICAgICAg
ICAgICAgICBsZXQgdmFsdWUgPSByZXF1ZXN0LmdldFtuYW1lXTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgbGV0IHBvc3RLZXlzID0gT2JqZWN0LmtleXMocmVxdWVzdC5w
b3N0KTsKKyAgICAgICAgaWYgKHBvc3RLZXlzLmxlbmd0aCkgeworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIiAgUG9zdDoiKTsKKyAgICAgICAgICAgIHBvc3RLZXlzLnNvcnQoKTsKKyAg
ICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgcG9zdEtleXMpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgdmFsdWUgPSByZXF1ZXN0LnBvc3RbbmFtZV07CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coYCAgICAke25hbWV9OiAke3ZhbHVlfWApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9u
LCBleHByZXNzaW9uLCBvdmVycmlkZXN9KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdn
ZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVk
RXZlbnQsIGZldGNoUmVzcG9uc2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2
ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVBZ2Vu
dC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAg
ICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2Uoewor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50LmRh
dGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAuLi5vdmVycmlkZXMsCisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBSdW50
aW1lQWdlbnQuYXdhaXRQcm9taXNlKGZldGNoUmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdCBkZXRhaWxzOiIp
OworICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3QocmVzcG9uc2UucmVzdWx0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZCIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhwcmVz
c2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAg
ICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIlBPU1QiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRGVs
ZXRlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNl
cHRpb24gd2l0aCBERUxFVEUiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNv
dXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgbWV0aG9k
OiAiREVMRVRFIiB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZE5vblN0YW5kYXJkIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBOT05T
VEFOREFSRCIsCisgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRl
cmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeyBtZXRob2Q6ICJOT05TVEFO
REFSRCIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2RFbXB0eSIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGggZW1wdHkgc3RyaW5nIiwK
KyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hv
LnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIiIgfSwKKyAgICB9KTsKKwor
ICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dC5VUkwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVy
Y2VwdGlvbiB3aXRoIGRpZmZlcmVudCBVUkwiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hE
YXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6
IHsgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9pbnRlcmNlcHQtZWNoby5waHA/bmV3VVJMPXZhbHVlIiB9LAorICAgIH0pOworCisgICAgYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTEZy
YWdtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRl
cmNlcHRpb24gd2l0aCBVUkwgd2l0aCBmcmFnbWVudCIsCisgICAgICAgIGV4cHJlc3Npb246ICJm
ZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJy
aWRlczogeyB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCNmcmFnbWVudCIgfSwKKyAgICB9KTsKKworICAgIGFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxF
bXB0eSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJj
ZXB0aW9uIHdpdGggZW1wdHkgVVJMIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgn
cmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IHVy
bDogIiIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5IZWFkZXJzIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJU
ZXN0cyByZXF1ZXN0IGhlYWRlcnMgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhwcmVzc2lvbjog
ImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3Zl
cnJpZGVzOiB7IGhlYWRlcnM6IHsgIlgtVmFsdWUiOiAib3ZlcnJpZGRlbiIgfSB9LAorICAgIH0p
OworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LlBvc3REYXRhIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IHBv
c3QgZGF0YSBpbnRlcmNlcHRpb24iLAorICAgICAgICBleHByZXNzaW9uOiAicG9zdERhdGEoJ3Jl
c291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeworICAg
ICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCisgICAgICAgICAgICBwb3N0RGF0YTogYnRvYSgidmFs
dWU9b3ZlcnJpZGRlbiIpLAorICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gYWx0ZXJpbmcgcmVxdWVz
dCBwcm9wZXJ0aWVzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVz
b3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGU1ZjRlMDdlZmI2MjZhM2ZhM2ZjZTk1NmQzYzUxMWY5ODAyM2FhZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxFUlQ6
IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURFTiBvdmVycmlkZS5qcyBU
RVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVzb3Vy
Y2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJy
ZXNvdXJjZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3ItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MjQ4ZWVlOTAwMjI1OGE4MmYzZGYyOTU4MzQ1MjY3ODBkNjMxNDYxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBA
CitDT05TT0xFIE1FU1NBR0U6IEFjY2VzcyBkZW5pZWQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRp
b24gd2l0aCBlcnJvciBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisKKworPT0gUnVubmluZyB0
ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBnZW5l
cmFsIGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxVUkUgVEVYVDogUmVxdWVzdCBpbnRl
cmNlcHRlZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
LlN1YnJlc291cmNlIHdpdGggYWNjZXNzIGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxV
UkUgVEVYVDogQWNjZXNzIGRlbmllZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggY2FuY2VsZWQgZXJyb3IKK1RyaWdnZXJp
bmcgbG9hZC4uLgorRkFJTFVSRSBURVhUOiBSZXF1ZXN0IGNhbmNlbGVkCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCB0aW1l
b3V0IGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxVUkUgVEVYVDogUmVxdWVzdCB0aW1l
ZCBvdXQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2RmNTRiOWE5ZmVlOTIwY2I4
MTA0OTZlY2YwZTgzNTkzNGYwNGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13
aXRoLWVycm9yLmh0bWwKQEAgLTAsMCArMSw3OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2Fk
U3VicmVzb3VyY2UoKQoreworICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
bGluayIpOworICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOworICAgIGxpbmsuaHJlZiA9ICJy
ZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiOworICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQo
bGluayk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3Rv
clRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9y
Iik7CisKKyAgICBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAg
IHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
c3R5bGVzaGVldC5jc3MiLAorICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5l
dHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBhZGRU
ZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Npb24sIGVycm9yVHlwZX0pIHsKKyAg
ICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAg
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICAg
ICAgbGV0IFtyZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudCwgZmV0Y2hSZXNwb25zZV0gPSBhd2FpdCBQ
cm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3YWl0
RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkKSwKKyAgICAg
ICAgICAgICAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlKCJsb2FkU3VicmVzb3VyY2UoKSIp
LAorICAgICAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAgICAgbGV0IFtsb2FkaW5nRGlk
RmFpbEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICAgICAgV0ku
UmVzb3VyY2UuYXdhaXRFdmVudChXSS5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmFpbCksCisg
ICAgICAgICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0
aEVycm9yLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVl
c3RJbnRlcmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3JUeXBlLAorICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIF0p
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMVVJFIFRFWFQ6ICIgKyBs
b2FkaW5nRGlkRmFpbEV2ZW50LnRhcmdldC5mYWlsdXJlUmVhc29uVGV4dCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIGdlbmVyYWwgZXJy
b3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRl
cmNlcHRpb24gd2l0aCBnZW5lcmFsIGVycm9yIiwKKyAgICAgICAgZXJyb3JUeXBlOiBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5HZW5lcmFsLAorICAgIH0p
OworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggYWNjZXNzIGVycm9yIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggYWNjZXNzIGVy
cm9yIiwKKyAgICAgICAgZXJyb3JUeXBlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5S
ZXNvdXJjZUVycm9yVHlwZS5BY2Nlc3NDb250cm9sLAorICAgIH0pOworCisgICAgYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNl
IHdpdGggY2FuY2VsZWQgZXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNl
IHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBjYW5jZWxlZCBlcnJvciIsCisgICAgICAg
IGVycm9yVHlwZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuUmVzb3VyY2VFcnJvclR5
cGUuQ2FuY2VsbGF0aW9uLAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggdGltZW91dCBl
cnJvciIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGlu
dGVyY2VwdGlvbiB3aXRoIHRpbWVvdXQgZXJyb3IiLAorICAgICAgICBlcnJvclR5cGU6IEluc3Bl
Y3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLlJlc291cmNlRXJyb3JUeXBlLlRpbWVvdXQsCisgICAg
fSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVy
Y2VwdGlvbiB3aXRoIGVycm9yIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZDcwYTE2NmM3NjkxM2E4ZWRlMzM4MmViOWMyZjhlZjk5MmVhNzgyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDggQEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK0FMRVJUOiBPVkVSUklE
REVOIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNw
b25zZSBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCByZXNwb25zZQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVz
b3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZjY1MzRkNGIyODRlZDBlYzg1
Yzc0NjI0ZmE3ZDMwZmYzYTEwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtcmVzcG9uc2UuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIpOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291
cmNlIHdpdGggcmVzcG9uc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVz
ZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNwb25zZSIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmlu
dm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIsCisgICAgICAgICAgICAgICAgc3Rh
Z2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnNpbmdsZUZp
cmVFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRl
ZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwg
cmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRl
cmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2phdmFzY3JpcHQi
LAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgYWxlcnQoIk9WRVJSSURERU4gb3ZlcnJp
ZGUuanMgVEVYVCIpOyBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJpZGVD
b250ZW50RGlkTG9hZCIpO2AsCisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZh
bHNlLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sCisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXdhaXQg
SW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVB
bGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuYXdh
aXRFdmVudCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlv
biB3aXRoIHJlc3BvbnNlIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZjU4NzljMTc5ZTJkMzBmOWY4Y2ZkMjY2ZDM5ODU2ODhhZDY4NzRhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5
bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3Vy
Y2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRl
cmNlcHRpb24iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgTmV0
d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDog
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJp
ZGUuanMiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0
d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
V0kubmV0d29ya01hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAg
ICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmludm9rZSh7CisgICAg
ICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcyIsCisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtp
Z25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAg
ICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiT3ZlcnJpZGVDb250ZW50RGlk
TG9hZCIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRG
aW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBpbnRlcmNlcHRpbmcgdGhlIHN1YnJlc291
cmNlIGxvYWQuPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVycmlkZS5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTBiNWJh
N2RiOGZkMjBjOWMzOWEyZTc4NWVjNjE4NDlmOTczOGUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13
aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcxIEBACitBTEVSVDogREVGQVVM
VCBvdmVycmlkZS5qcyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9u
c2UuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RX
aXRoUmVzcG9uc2UKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVl
c3RXaXRoUmVzcG9uc2UuVGV4dAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxz
OgorICBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUgVHlwZTogdGV4dC9wbGFpbgorICBTdGF0dXM6IDk4NyBP
dmVycmlkZSBTdGF0dXMgVGV4dAorICBSZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtdHlw
ZTogdGV4dC9wbGFpbgorICAgIHgtb3ZlcnJpZGUtaGVhZGVyLTE6IE92ZXJyaWRlLUhlYWRlci1W
YWx1ZS0xCisgICAgeC1vdmVycmlkZS1oZWFkZXItMjogT3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTIK
KyAgQ29udGVudDogUEFTUyAtIE9WRVJSSURERU4gVEVYVAorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkphdmFTY3JpcHQKK1RyaWdn
ZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4dAorICBNSU1FIFR5
cGU6IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQKKyAgU3RhdHVzOiAyMDAgU3VwZXIgT0sKKyAgUmVz
cG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQK
KyAgICB4LWN1c3RvbS1oZWFkZXI6IEhlYWRlciB2YWx1ZQorICBDb250ZW50OiAvKiBQQVNTICov
IChmdW5jdGlvbigpIHsgLyogT1ZFUlJJRERFTiAqLyB9KSgpOworCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkltYWdlCitUcmlnZ2Vy
aW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQKKyAgTUlNRSBUeXBl
OiBpbWFnZS9wbmcKKyAgU3RhdHVzOiAyMDAgT0sKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBj
b250ZW50LXR5cGU6IGltYWdlL3BuZworICBDb250ZW50OiA8ZGF0YT4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuUXVlcnlT
dHJpbmcKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJMOiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4
dD9zPTIKKyAgTUlNRSBUeXBlOiB0ZXh0L3BsYWluCisgIFN0YXR1czogMjAwIE9LCisgIFJlc3Bv
bnNlIEhlYWRlcnM6CisgICAgY29udGVudC10eXBlOiB0ZXh0L3BsYWluCisgICAgeC1leHBlY3Rl
ZDogUEFTUworICBDb250ZW50OiBQQVNTCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3Jr
LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVVJMLkZyYWdtZW50CitUcmlnZ2VyaW5nIGxv
YWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQKKyAgTUlNRSBUeXBlOiB0ZXh0
L3BsYWluCisgIFN0YXR1czogMjAwIE9LCisgIFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVu
dC10eXBlOiB0ZXh0L3BsYWluCisgICAgeC1leHBlY3RlZDogUEFTUworICBDb250ZW50OiBQQVNT
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UuNDA0CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlk
ZS50eHQKKyAgTUlNRSBUeXBlOiB0ZXh0L3BsYWluCisgIFN0YXR1czogNDA0IE5vdCBGb3VuZAor
ICBSZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbgorICAgIHgt
ZXhwZWN0ZWQ6IFBBU1MKKyAgQ29udGVudDogUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVz
cG9uc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5NzEzM2UwNzUw
MThkY2VjODVmMjk2NzI5NzFhOTQ5ZjliZDZmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgt
cmVzcG9uc2UuaHRtbApAQCAtMCwwICsxLDE3NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlv
biB0cmlnZ2VyT3ZlcnJpZGVMb2FkKHVybFN1ZmZpeCkgeworICAgIGxldCB1cmwgPSAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQi
OworICAgIGlmICh1cmxTdWZmaXgpCisgICAgICAgIHVybCArPSB1cmxTdWZmaXg7CisKKyAgICB0
cnkgeworICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOworICAgICAgICBy
ZXR1cm4geworICAgICAgICAgICAgdXJsOiByZXNwb25zZS51cmwsCisgICAgICAgICAgICB0ZXh0
OiBhd2FpdCByZXNwb25zZS50ZXh0KCksCisgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0
YXR1cywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsCisgICAg
ICAgICAgICBoZWFkZXJzOiBBcnJheS5mcm9tKHJlc3BvbnNlLmhlYWRlcnMpLAorICAgICAgICB9
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGUubWVzc2FnZSB9
OworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UiKTsKKyAgICAKKyAgICBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7
CisgICAgICAgIHVybDogIi4qb3ZlcnJpZGVcLnR4dC4qIiwKKyAgICAgICAgaXNSZWdleDogdHJ1
ZSwKKyAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXF1ZXN0LAorICAgIH0pOworCisgICAgZnVuY3Rpb24gbG9nUmVzcG9uc2UocmVzcG9u
c2UpIHsKKyAgICAgICAgcmVzcG9uc2UuaGVhZGVycyA9IG5ldyBNYXAocmVzcG9uc2UuaGVhZGVy
cyk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFVSTDogJHtyZXNwb25zZS51cmx9YCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIE1JTUUgVHlwZTogJHtyZXNwb25zZS5oZWFk
ZXJzLmdldCgiY29udGVudC10eXBlIil9YCk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAg
IFN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgUmVzcG9uc2UgSGVhZGVyczpgKTsKKyAgICAgICAg
bGV0IGtleXMgPSBBcnJheS5mcm9tKHJlc3BvbnNlLmhlYWRlcnMua2V5cygpKTsKKyAgICAgICAg
a2V5cy5zb3J0KCk7CisgICAgICAgIGZvciAobGV0IG5hbWUgb2Yga2V5cykgeworICAgICAgICAg
ICAgbGV0IHZhbHVlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQobmFtZSk7CisgICAgICAgICAgICBp
ZiAoIW5hbWUuc3RhcnRzV2l0aCgieC0iKSAmJiAhbmFtZS5zdGFydHNXaXRoKCJjb250ZW50LSIp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coYCAgICAke25hbWV9OiAke3ZhbHVlfWApOworICAgICAgICB9CisgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKGAgIENvbnRlbnQ6ICR7cmVzcG9uc2UudGV4dH1gKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBhZGRUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Npb24sIHJlc3Bv
bnNlRGF0YX0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFt
ZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7
CisgICAgICAgICAgICAgICAgbGV0IFtyZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudCwgZmV0Y2hSZXNw
b25zZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJLm5ldHdv
cmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVy
Y2VwdGVkKSwKKyAgICAgICAgICAgICAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlKGV4cHJl
c3Npb24pLAorICAgICAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAgICAgYXdhaXQgTmV0
d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudC5kYXRhLnJlcXVl
c3RJZCwKKyAgICAgICAgICAgICAgICAgICAgLi4ucmVzcG9uc2VEYXRhLAorICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgUnVudGltZUFn
ZW50LmF3YWl0UHJvbWlzZShmZXRjaFJlc3BvbnNlLnJlc3VsdC5vYmplY3RJZCwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlc3BvbnNlIGRldGFpbHM6Iik7Cisg
ICAgICAgICAgICAgICAgbG9nUmVzcG9uc2UocmVzcG9uc2UucmVzdWx0LnZhbHVlKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLlRleHQiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIkludGVyY2VwdCByZXF1ZXN0IHdpdGggdGV4dCBjb250ZW50LiIs
CisgICAgICAgIGV4cHJlc3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKClgLAorICAgICAgICBy
ZXNwb25zZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRlbnQ6IGBQQVNTIC0gT1ZFUlJJRERFTiBU
RVhUYCwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWlt
ZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1czogOTg3LAorICAgICAgICAg
ICAgc3RhdHVzVGV4dDogIk92ZXJyaWRlIFN0YXR1cyBUZXh0IiwKKyAgICAgICAgICAgIGhlYWRl
cnM6IHsKKyAgICAgICAgICAgICAgICAiWC1PdmVycmlkZS1IZWFkZXItMSI6ICJPdmVycmlkZS1I
ZWFkZXItVmFsdWUtMSIsCisgICAgICAgICAgICAgICAgIlgtT3ZlcnJpZGUtSGVhZGVyLTIiOiAi
T3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTIiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAg
ICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5KYXZhU2NyaXB0IiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJJbnRlcmNlcHQgcmVxdWVzdCB3aXRoIGphdmFzY3JpcHQgY29udGVudC4iLAorICAgICAgICBl
eHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRh
OiB7CisgICAgICAgICAgICBjb250ZW50OiBgLyogUEFTUyAqLyAoZnVuY3Rpb24oKSB7IC8qIE9W
RVJSSURERU4gKi8gfSkoKTtgLAorICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisg
ICAgICAgICAgICBtaW1lVHlwZTogImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLAorICAgICAgICAg
ICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiU3VwZXIgT0siLAorICAg
ICAgICAgICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICJYLUN1c3RvbS1IZWFkZXIiOiAi
SGVhZGVyIHZhbHVlIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAg
ICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RX
aXRoUmVzcG9uc2UuSW1hZ2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkludGVyY2VwdCByZXF1
ZXN0IHdpdGggaW1hZ2UgY29udGVudC4iLAorICAgICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92
ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7CisgICAgICAgICAgICBjb250
ZW50OiBidG9hKCI8ZGF0YT4iKSwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IHRydWUsCisg
ICAgICAgICAgICBtaW1lVHlwZTogImltYWdlL3BuZyIsCisgICAgICAgICAgICBzdGF0dXM6IDIw
MCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAgICBoZWFkZXJzOiB7
fSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuUXVlcnlTdHJpbmci
LAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgb3ZlcnJpZGVzIHdpdGggZGlmZmVyZW50IHF1
ZXJ5IHN0cmluZ3MuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQo
Ij9zPTIiKWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgYmFzZTY0RW5j
b2RlZDogZmFsc2UsCisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBt
aW1lVHlwZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAg
ICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgaGVhZGVyczogeyJYLUV4cGVjdGVk
IjogIlBBU1MifSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuRnJh
Z21lbnQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgb3ZlcnJpZGUgZm9yIGEgbG9hZCB3
aXRoIGEgZnJhZ21lbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxv
YWQoIiNmcmFnIilgLAorICAgICAgICByZXNwb25zZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRl
bnQ6ICJQQVNTIiwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAg
ICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAg
ICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsiWC1FeHBl
Y3RlZCI6ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuNDA0
IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGZvciBhIDQwNCBvdmVycmlkZS4iLAorICAg
ICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9u
c2VEYXRhOiB7CisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBiYXNl
NjRFbmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisg
ICAgICAgICAgICBzdGF0dXM6IDQwNCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJOb3QgRm91
bmQiLAorICAgICAgICAgICAgaGVhZGVyczogeyJYLUV4cGVjdGVkIjogIlBBU1MifSwKKyAgICAg
ICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJl
cXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UuPC9wPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9vdmVycmlkZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRl
cmNlcHQtZWNoby5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhYjUwYTU3YTQ0ZGE4
YmM2ZjExOGViNWZkZWJiZTcxMmFmNGUxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBo
cApAQCAtMCwwICsxLDE4IEBACit7CisgICAgInVyaSI6ICI8P3BocCBlY2hvICRfU0VSVkVSWydS
RVFVRVNUX1VSSSddID8+IiwKKyAgICAibWV0aG9kIjogIjw/cGhwIGVjaG8gJF9TRVJWRVJbJ1JF
UVVFU1RfTUVUSE9EJ107ID8+IiwKKyAgICAiaGVhZGVycyI6IHsKKzw/cGhwIGZvcmVhY2ggKGdl
dGFsbGhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAgICAgIjw/cGhwIGVj
aG8gJG5hbWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8P3BocCB9ID8+IH0sCisg
ICAgImdldCI6IHsKKzw/cGhwIGZvcmVhY2ggKCRfR0VUIGFzICRuYW1lID0+ICR2YWx1ZSkgeyA/
PgorICAgICAgICAiPD9waHAgZWNobyAkbmFtZTsgPz4iOiAiPD9waHAgZWNobyAkdmFsdWU7ID8+
IiwKKzw/cGhwIH0gPz4KKyAgICB9LAorICAgICJwb3N0IjogeworPD9waHAgZm9yZWFjaCAoJF9Q
T1NUIGFzICRuYW1lID0+ICR2YWx1ZSkgeyA/PgorICAgICAgICAiPD9waHAgZWNobyAkbmFtZTsg
Pz4iOiAiPD9waHAgZWNobyAkdmFsdWU7ID8+IiwKKzw/cGhwIH0gPz4KKyAgICB9LAorfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92
ZXJyaWRlbi1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyMjE2N2VkYjBiYmUzZmIwNzJjNDcxZWM4
MjM3NDk1M2E1ZDJhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1w
YWdlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD48L2hlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcyI+CisgICAgPC9zY3JpcHQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPk92ZXJyaWRkZW4g
cGFnZSBjb250ZW50PC9wPgorICAgICAgICA8c2NyaXB0PmFsZXJ0KCJSRVBMQUNFRCBIVE1MIENP
TlRFTlQiKTsgVGVzdFBhZ2UuY29tcGxldGVUZXN0KCk7PC9zY3JpcHQ+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2Vw
dC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc4ZWM0ZTI2MTE1N2Qz
MzA5MTljMTMyODk5OTU1Nzc5ODkzN2VhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1zY3JpcHQuanMKQEAgLTAsMCArMSwyIEBACithbGVydCgiT1ZFUlJJREVOIG92
ZXJyaWRlLmpzIFRFWFQiKTsKK1Rlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJPdmVy
cmlkZUNvbnRlbnREaWRMb2FkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCmluZGV4IGEwMjY0OWQ1
NmJkYjNkMjg1YzFmMGQ3ZjgwMGNmZTQxMDg5MjI2NDEuLjgzMWE2MWY2Nzg1ZTQ0ODhiMTJkN2Rm
ZGVmMWZlNjZkMzc1NTEyMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCkBAIC04NywxMiArODcs
MTQgQEAgVGVzdFBhZ2UucnVuVGVzdCA9IHdpbmRvdy5ydW5UZXN0ID0gZnVuY3Rpb24oKQogICAg
IGlmICh0eXBlb2YgdGVzdEZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgIGFsZXJ0
KCJGYWlsZWQgdG8gc2VuZCB0ZXN0KCkgYmVjYXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4iKTsK
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBsZXQgdXJsID0gdGVzdFJ1bm5lci5pbnNwZWN0b3JUZXN0U3R1YlVSTDsKICAgICBp
ZiAoIXVybCkgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIG9idGFpbiBpbnNwZWN0b3IgdGVz
dCBzdHViIFVSTC4iKTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJ
bkZyb250ZW5kKGluaXRpYWxpemVycykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1j
b250aW51ZS1yZXNwb25zZS5odG1sCmluZGV4IDQ0ODA2NDIwMDQ0NzY5N2ZiMDdmNDE2ZTk3ODYz
OThlMDAzZDI0NjAuLmQ2NmUxNDBlYjcxNzg2NDdjMzg4NjI5YjBkMTNlMWFhMDFhMDMwYzkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92
ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbApA
QCAtNDYsNyArNDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIC8vIExldCB0aGUg
bG9hZCBjb250aW51ZS4KICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVz
cG9uc2VSZWNlaXZlZCJ9KSwKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2Fp
dENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHty
ZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJlcXVlc3RJZH19KSwKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50
ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHtyZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1z
LnJlcXVlc3RJZCwgc3RhZ2U6ICJyZXNwb25zZSJ9fSksCiAgICAgICAgICAgICBdKTsKICAgICAg
ICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJSZXNwb25zZSByZWNlaXZlZC4iKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJj
ZXB0ZWQuanNvbiBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRh
LWludGVyY2VwdGVkLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0ZTJiMGQ5OTY3Y2ViMWVkN2UzMmNkMTky
OTM1ZGYxNzY1ODEyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24KQEAgLTAsMCArMSBAQAoraW50
ZXJjZXB0ZWQgcmVxdWVzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzOTM1ZmViNzQ0ZDQ3
Y2Y2MWZkM2MxZjMzODkyYmJlN2YyYWU5Yjk2Li42ZGQ0ZmMwMmI1NTY3MzRhZGU1NzJkNmZjZmFl
NTcyM2I1NjlmMDJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zCkBAIC01NzQsNiArNTc0LDE4IEBAIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtc2NyaXB0LXRhZy5odG1sIFsgRmFpbHVyZSBdCiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNlLWluc3BlY3Rvci1v
dmVycmlkZS5odG1sIFsgRmFpbHVyZSBdCiBpbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJj
ZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sIFsgU2tpcCBdCiAKKyMgUmVxdWVzdCBp
bnRlcmNlcHRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBXZWJLaXQxCitodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QuaHRtbCBbIFNraXAgXQoraHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1s
IFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LWZyYWdtZW50Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sIFsgU2tpcCBdCitodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtZXJyb3IuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwgWyBTa2lwIF0KK2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25z
ZS5odG1sIFsgU2tpcCBdCisKIHdlYmtpdC5vcmcvYi8xNjQ5MzMgaHR0cC90ZXN0cy9taXNjL2xp
bmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8x
NjU1NDEgY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtb3ZlcmxhcC1leHRlbnQtcnRs
Lmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401941</attachid>
            <date>2020-06-15 14:33:42 -0700</date>
            <delta_ts>2020-06-15 18:46:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207446-20200615143341.patch</filename>
            <type>text/plain</type>
            <size>112878</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTk1MjMwNmRlNGQ3MDNlYWNkY2VkYTliYzFlNjUxYzg0OGFmNGE4Li4xMjhjMTk4ZmE5YTczMzk1
MDYyZTNiNTg3NDkwNTJjMTVhYTZmNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBhdmVsLmZlbGRtYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVy
Y2VwdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRo
ZSBOZXR3b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRl
cmNlcHRXaXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGlu
dWVkLCBtb2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2
ZQorICAgICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICog
aW5zcGVjdG9yL3Byb3RvY29sL05ldHdvcmsuanNvbjoKKwogMjAyMC0wNi0xMSAgUGF1bG8gTWF0
b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBpbmNsdWRlIHRv
IEpTT05PYmplY3QuY3BwIC0gbm9uLXVuaWZpZWQgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGM5MDI3
ZjM1ZDA3ZjcyOTQwMjVmY2Y3ZGY5NjM5MzQzYTllNmM5Li40YWFlMGRiN2JhOTA4Mzg0N2ExYTc2
OWNkMWJjY2Y5ZTg2N2U1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjAtMDYt
MDMgIFBhdmVsIEZlbGRtYW4gIDxwYXZlbC5mZWxkbWFuQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgcmVxdWVzdCBpbnRlcmNlcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVj
ZXMgbmV0d29yayByZXF1ZXN0IGludGVyY2VwdGlvbiB0byB0aGUgTmV0d29yayAKKyAgICAgICAg
cHJvdG9jb2wgZG9tYWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90
aWZpY2F0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVs
ZmlsbGVkLiBOZXR3b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3Qn
IGFuZCAncmVzcG9uc2UnIHZhbHVlcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtY29udGlu
dWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1mcmFnbWVudC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJl
cXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2Uu
aHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNl
cHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hv
dWxkSW50ZXJjZXB0UmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6Omlu
dGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZEludGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNv
bnRpbnVlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6c2V0SW50ZXJjZXB0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxJbnRlcmNlcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0Q29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVz
dDo6UGVuZGluZ0ludGVyY2VwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdDo6Y29udGludWVXaXRoT3JpZ2lu
YWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6UGVu
ZGluZ0ludGVyY2VwdFJlcXVlc3Q6OmNvbnRpbnVlV2l0aFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnRlcmNlcHQ6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2FkKToKKwogMjAyMC0w
Ni0xMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcHJvdmUgdXJs
LXNldHRlcnMuaHRtbCBXUFQgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMDFlZmUz
ZDJmMGU5ODg1NjU3NDE5ZDIxNzBiYTBkYzRlNWNjNzU0NC4uZjUyZmQ5ZThiMmUwNzE1YmQ2Y2Rj
MDQ0NzU5MTM0NDg2YzIyZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMjAtMDYtMDMgIFBhdmVsIEZlbGRtYW4gPHBhdmVsLmZlbGRtYW5AZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSByZXF1ZXN0IGludGVyY2VwdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NDQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBuZXR3b3JrIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRvIHRoZSBOZXR3
b3JrIAorICAgICAgICBwcm90b2NvbCBkb21haW4uIEl0IGFkZHMgTmV0d29yay5pbnRlcmNlcHRX
aXRoUmVxdWVzdCBub3RpZmljYXRpb24gdGhhdAorICAgICAgICBjYW4gYmUgY29udGludWVkLCBt
b2RpZmllZCBvciBmdWxmaWxsZWQuIE5ldHdvcmtTdGFnZSBlbnVtIGNhbiBub3cgaGF2ZQorICAg
ICAgICAncmVxdWVzdCcgYW5kICdyZXNwb25zZScgdmFsdWVzLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5hZGRMb2NhbFJlc291cmNlT3ZlcnJpZGUpOgorICAgICAgICAo
V0kuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnJlbW92ZUxvY2FsUmVzb3VyY2VPdmVycmlkZSk6
CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEludGVyY2VwdGVk
KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5yZXNwb25zZUludGVyY2Vw
dGVkKToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlUmVzb3Vy
Y2VPdmVycmlkZURpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5OZXR3b3JrT2JzZXJ2ZXIucHJv
dG90eXBlLnJlcXVlc3RJbnRlcmNlcHRlZCk6CisKIDIwMjAtMDYtMTAgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRleHQgaW5wdXRz
IHNob3VsZCBub3Qgc3BlbGxjaGVjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlN2Y4NDlkNmY4ODczYjA3NjFiZDg1
YjRjMDM2NTZhOTkwYWE5NWNjLi5iY2RiNDZlM2FlOTIyZTMxYjQzMzBlZmJmY2EyNmQ5Y2YxZjk3
YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTAzICBQYXZlbCBGZWxkbWFu
ICA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50
cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsgcmVxdWVz
dCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsgCisgICAgICAgIHByb3RvY29sIGRvbWFpbi4g
SXQgYWRkcyBOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0IG5vdGlmaWNhdGlvbiB0aGF0Cisg
ICAgICAgIGNhbiBiZSBjb250aW51ZWQsIG1vZGlmaWVkIG9yIGZ1bGZpbGxlZC4gTmV0d29ya1N0
YWdlIGVudW0gY2FuIG5vdyBoYXZlCisgICAgICAgICdyZXF1ZXN0JyBhbmQgJ3Jlc3BvbnNlJyB2
YWx1ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKToK
KwogMjAyMC0wNi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIE1lZGlhVXNhZ2VNYW5hZ2VyQ29jb2Egc2hvdWxkIHVzZSBhIGRpZmZl
cmVudCBVU1ZpZGVvVXNhZ2UgaW5pdGlhbGl6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0d29yay5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KaW5kZXggZjI0MjVkZDZhZmMw
ZWZiZjFkMTE1MjIwZmQ0MjQ2YWZlMmZiOTJlMS4uNjVhYjIwOTJiMGZmZDBlYWQzZGExZGRjY2Qz
OThkNGY0MTc5ZjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9OZXR3b3JrLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KQEAgLTE1NSw3ICsxNTUsMTMgQEAKICAgICAgICAg
ICAgICJpZCI6ICJOZXR3b3JrU3RhZ2UiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3RhZ2VzIG9mIGEgbmV0d29y
ayByZXF1ZXN0LiIsCi0gICAgICAgICAgICAiZW51bSI6IFsicmVzcG9uc2UiXQorICAgICAgICAg
ICAgImVudW0iOiBbInJlcXVlc3QiLCAicmVzcG9uc2UiXQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAiaWQiOiAiUmVzb3VyY2VFcnJvclR5cGUiLAorICAgICAgICAgICAgInR5
cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmZXJlbnQgc3Rh
Z2VzIG9mIGEgbmV0d29yayByZXF1ZXN0LiIsCisgICAgICAgICAgICAiZW51bSI6IFsiR2VuZXJh
bCIsICJBY2Nlc3NDb250cm9sIiwgIkNhbmNlbGxhdGlvbiIsICJUaW1lb3V0Il0KICAgICAgICAg
fQogICAgIF0sCiAgICAgImNvbW1hbmRzIjogWwpAQCAtMjQ0LDEwICsyNTAsMTAgQEAKICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJBZGQgYW4gaW50ZXJjZXB0aW9uLiIsCiAgICAgICAgICAg
ICAidGFyZ2V0VHlwZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlVSTCBwYXR0ZXJuIHRvIGludGVyY2VwdCwgaW50ZXJjZXB0IGV2ZXJ5dGhpbmcgaWYg
bm90IHNwZWNpZmllZCBvciBlbXB0eSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGlu
dGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBm
YWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5nIG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1l
dGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBz
dGFnZXMuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVh
dHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNTYsMTcgKzI2MiwyOSBAQAogICAgICAg
ICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29ya1N0YWdl
IiwgImRlc2NyaXB0aW9uIjogIlN0YWdlIHRvIGludGVyY2VwdC4iIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJjYXNlU2Vuc2l0aXZlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBmYWxzZSwgaWdub3JlcyBsZXR0ZXIgY2FzaW5n
IG9mIGB1cmxgIHBhcmFtZXRlci4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Jl
Z2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVndWxhciBleHByZXNzaW9u
LiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YWdlIiwgIiRyZWYiOiAiTmV0d29y
a1N0YWdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIG5vdCBwcmVzZW50
IHRoaXMgYXBwbGllcyB0byBhbGwgbmV0d29yayBzdGFnZXMuIiB9CisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc1JlZ2V4IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCB0cmVhdHMgYHVybGAgcGFyYW1ldGVyIGFzIGEgcmVn
dWxhciBleHByZXNzaW9uLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7
CiAgICAgICAgICAgICAibmFtZSI6ICJpbnRlcmNlcHRDb250aW51ZSIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ29udGludWUgYW4gaW50ZXJjZXB0aW9uIHdpdGggbm8gbW9kaWZpY2F0
aW9ucy4iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRpbnVlIHJlcXVlc3Qgb3Ig
cmVzcG9uc2Ugd2l0aG91dCBtb2RpZmljYXRpb25zLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlw
ZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0
aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3Ig
cmVzcG9uc2UgdG8gY29udGludWUuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBm
b3IgdGhlIGludGVyY2VwdGVkIE5ldHdvcmsgcmVxdWVzdCBvciByZXNwb25zZSB0byBjb250aW51
ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFnZSIsICIkcmVmIjogIk5ldHdv
cmtTdGFnZSIsICJkZXNjcmlwdGlvbiI6ICJTdGFnZSB0byBjb250aW51ZS4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0V2l0aFJlcXVlc3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgaW50
ZXJjZXB0ZWQgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRlZCBvbmUuIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRy
ZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRl
cmNlcHRlZCBOZXR3b3JrIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gY29udGludWUuIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFs
IjogdHJ1ZSwiZGVzY3JpcHRpb24iOiAiSFRUUCByZXF1ZXN0IHVybC4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJtZXRob2QiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0
cnVlLCJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlcXVlc3QgbWV0aG9kLiIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFkZXJzIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4gUGFzcyB0aHJvdWdo
IG9yaWdpbmFsIHZhbHVlcyBpZiB1bm1vZGlmaWVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInBvc3REYXRhIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIkhUVFAgUE9TVCByZXF1ZXN0IGRhdGEsIGJhc2U2NC1lbmNvZGVkLiIgfQog
ICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yODIsNiArMzAwLDI3IEBA
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVz
IHRleHQuIFBhc3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0sCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFkZXJzIiwgIiRyZWYiOiAiSGVhZGVycyIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIFBh
c3MgdGhyb3VnaCBvcmlnaW5hbCB2YWx1ZXMgaWYgdW5tb2RpZmllZC4iIH0KICAgICAgICAgICAg
IF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJjZXB0
UmVxdWVzdFdpdGhSZXNwb25zZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvdmlk
ZSByZXNwb25zZSBmb3IgYW4gaW50ZXJjZXB0ZWQgcmVxdWVzdC4gUmVxdWVzdCBjb21wbGV0ZWx5
IGJ5cGFzc2VzIHRoZSBuZXR3b3JrIGluIHRoaXMgY2FzZSBhbmQgaXMgaW1tZWRpYXRlbHkgZnVs
ZmlsbGVkIHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVx
dWVzdElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgZm9yIHRoZSBpbnRlcmNlcHRlZCBO
ZXR3b3JrIHJlc3BvbnNlIHRvIG1vZGlmeS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYmFzZTY0RW5jb2RlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1
ZSwgaWYgY29udGVudCB3YXMgc2VudCBhcyBiYXNlNjQuIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTUlN
RSBUeXBlIGZvciB0aGUgZGF0YS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0
dXMiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3Rh
dHVzIGNvZGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzVGV4dCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyB0ZXh0
LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAiJHJlZiI6ICJIZWFk
ZXJzIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVhZGVycy4iIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJj
ZXB0UmVxdWVzdFdpdGhFcnJvciIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmFpbCBy
ZXF1ZXN0IHdpdGggZ2l2ZW4gZXJyb3IgdHlwZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1
ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBmb3IgdGhlIGludGVyY2VwdGVkIE5l
dHdvcmsgcmVxdWVzdCB0byBmYWlsLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVy
cm9yVHlwZSIsICIkcmVmIjogIlJlc291cmNlRXJyb3JUeXBlIiwgImRlc2NyaXB0aW9uIjogIkRl
bGl2ZXIgZXJyb3IgcmVhc29uIGZvciB0aGUgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAgICAgICAg
ICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpAQCAtMzU3LDkgKzM5Niwx
NyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzb3VyY2UiLCAiJHJlZiI6ICJDYWNo
ZWRSZXNvdXJjZSIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzb3VyY2UgZGF0YS4iIH0KICAg
ICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
cmVxdWVzdEludGVyY2VwdGVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3
aGVuIEhUVFAgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcmNlcHRlZC4gVGhlIGZyb250ZW5kIG11c3Qg
cmVzcG9uZCB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWU8L2NvZGU+LCA8Y29k
ZT5OZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0PC9jb2RlPmAgb3IgPGNvZGU+TmV0d29yay5p
bnRlcmNlcHRXaXRoUmVzcG9uc2U8L2NvZGU+YCB0byByZXNvbHZlIHRoaXMgcmVxdWVzdC4iLAor
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBmb3IgdGhpcyBpbnRlcmNlcHRlZCBuZXR3b3JrLiBDb3JyZXNwb25kcyB3aXRoIGFuIGVhcmxp
ZXIgPGNvZGU+TmV0d29yay5yZXF1ZXN0V2lsbEJlU2VudDwvY29kZT4uIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdCIsICIkcmVmIjogIlJlcXVlc3QiLCAiZGVzY3JpcHRp
b24iOiAiT3JpZ2luYWwgcmVxdWVzdCBjb250ZW50IHRoYXQgd291bGQgcHJvY2VlZCBpZiB0aGlz
IGlzIGNvbnRpbnVlZC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewog
ICAgICAgICAgICAgIm5hbWUiOiAicmVzcG9uc2VJbnRlcmNlcHRlZCIsCi0gICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2Vw
dGVkLiBUaGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJj
ZXB0Q29udGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnM8
L2NvZGU+YCB0byBjb250aW51ZSB0aGlzIHJlc3BvbnNlLiIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlc3BvbnNlIGhhcyBiZWVuIGludGVyY2VwdGVkLiBU
aGUgZnJvbnRlbmQgbXVzdCByZXNwb25zZSB3aXRoIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0Q29u
dGludWU8L2NvZGU+IG9yIDxjb2RlPk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlc3BvbnNlPC9jb2Rl
PmAgdG8gY29udGludWUgdGhpcyByZXNwb25zZS4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVz
IjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIGZvciB0aGlzIGludGVyY2VwdGVkIG5ldHdvcmsuIENvcnJlc3BvbmRz
IHdpdGggYW4gZWFybGllciA8Y29kZT5OZXR3b3JrLnJlcXVlc3RXaWxsQmVTZW50PC9jb2RlPi4i
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IGVkNzYzYzExZWI5NTY0NmY2M2VjZjhkZGE3MDhhYjg4NDE0ZjMy
OTAuLjZjYjU5ZWNlZWE0ZWIyZTgxNjVlOTU5NjQ0ODM3NjY1NjExZmE5MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC04MTEsMTAgKzgxMSwxNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhYwogICAgIH0KIH0K
IAotYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
dGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKLSAgICAgICAg
cmV0dXJuIG5ldHdvcmtBZ2VudC0+d2lsbEludGVyY2VwdFJlcXVlc3QocmVxdWVzdCk7CisgICAg
ICAgIHJldHVybiBuZXR3b3JrQWdlbnQtPndpbGxJbnRlcmNlcHQocmVxdWVzdCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50
ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmIChhdXRvKiBuZXR3
b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKKyAg
ICAgICAgcmV0dXJuIG5ldHdvcmtBZ2VudC0+c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChyZXF1ZXN0
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTgyNSw2ICs4MzIsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBpZiAo
YXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0Fn
ZW50KCkpCisgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdU
Rk1vdmUoaGFuZGxlcikpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3Jr
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBjN2I2NmJhMTE1NWQ5MWIzYzVlMGUzMTJlMTRiZDJmZTczMjg2ZDI1Li5kZjkzOTA1YjQ1
YmFlNGM3NGE3MWQxZWFlODljMTI1ZTAxODNhMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvblB1YmxpYy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKQEAgLTIzNCw4ICsyMzUsMTAg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIGJvb2wgd2lsbEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9p
ZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4pOwpAQCAtNDQyLDggKzQ0NSwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3Vy
Y2UmKTsKIAotICAgIHN0YXRpYyBib29sIHdpbGxJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wg
d2lsbEludGVyY2VwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOworICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
Jiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTEyNTcs
MTEgKzEyNjIsMTkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJgogICAgIHdpbGxEZXN0cm95Q2Fj
aGVkUmVzb3VyY2VJbXBsKGNhY2hlZFJlc291cmNlKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGluZSBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEludGVyY2VwdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoZmFsc2UpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxJbnRlcmNl
cHRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7CisgICAgICAgIHJl
dHVybiB3aWxsSW50ZXJjZXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0
dXJuIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZXF1
ZXN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyNzMsNiArMTI4NiwxMyBAQCBpbmxp
bmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVy
JiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KCpsb2FkZXIuZnJhbWUoKSwgbG9hZGVyLnJlcXVlc3QoKSkpOwor
ICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckZyYW1lKGxvYWRlci5mcmFtZSgpKSkKKyAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXggOTU0YWFmMTIxYTlmYTUwN2Q4
M2JjMTBhZTM3ZGUxZjEyOGY3ZGNmYy4uZTM4ZWYzOThlN2U5YWZjMWUwMWE1NGI5Y2U2OGZjMjM1
OThlOTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTMwLDExICszMCwyMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChmcmFtZSwgcmVxdWVzdCk7Cit9CisK
IGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmIGhhbmRsZXIpCit7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNl
cHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50
aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGI2N2U4OWI4
MGI0ZTdhODU4NmNhYzgxYWRlNWQ1OGExYmNiMGQ0MzEuLmEzMmY4NzdlYWEwNGYyN2QxMjEyNzBj
ZmY1YWNjM2IwMzJjMWM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDE0ICszNiwyNyBA
QCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKK2lubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoKmZyYW1lLCByZXF1ZXN0KTsKK30KKwogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSog
ZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CkBAIC01Myw2ICs2NiwxMiBAQCBpbmxpbmUgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lKgogICAgIHJldHVybiBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KCpmcmFtZSwgcmVzcG9uc2UpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBoYW5kbGVyKQor
eworICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVy
Y2VwdFJlcXVlc3QobG9hZGVyLmZyYW1lKCksIGxvYWRlci5yZXF1ZXN0KCkpKTsKKyAgICBpbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKK30KKwogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAg
IEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDJjZjQ5ODhm
MTMyMjJiZTU0MThiMGEyMzExNmI4ZGM5NmIxZjgzZjcuLjFjNWNhN2MyNzJlZmQ5MDc2OWI3MmY0
NWIwMDhmZjc3M2ZlYjliZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SFRUUEhlYWRlck1hcC5oIgpAQCAtNDY1LDYgKzQ2Niw3IEBAIHN0YXRpYyBJbnNwZWN0b3JQYWdl
QWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvCiB7CiAgICAgaWYgKHJlc291cmNlKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFn
ZW50OjppbnNwZWN0b3JSZXNvdXJjZVR5cGUoKnJlc291cmNlKTsKKwogICAgIHJldHVybiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CiB9CiAKQEAgLTg0MCwxMiArODQyLDEzIEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBt
X3Jlc291cmNlc0RhdGEtPmNsZWFyKCk7CiAgICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFy
KCk7CiAKKyAgICBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIGNvbnRpbnVlUGVuZGlu
Z1Jlc3BvbnNlcygpOwogCiAgICAgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoZmFsc2UpOwog
fQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwp
Citib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0KFVSTCB1cmwsIE5l
dHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UpCiB7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwogCkBAIC04NTQsNiArODU3LDExIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Zm9yIChhdXRvJiBpbnRlcmNlcHQgOiBtX2ludGVyY2VwdHMpIHsKKyAgICAgICAgaWYgKGludGVy
Y2VwdC5uZXR3b3JrU3RhZ2UgIT0gbmV0d29ya1N0YWdlKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChpbnRlcmNlcHQudXJsLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCiAgICAgICAgIGF1dG8gc2VhcmNoU3RyaW5nVHlwZSA9IGludGVyY2VwdC5pc1Jl
Z2V4ID8gQ29udGVudFNlYXJjaFV0aWxpdGllczo6U2VhcmNoU3RyaW5nVHlwZTo6UmVnZXggOiBD
b250ZW50U2VhcmNoVXRpbGl0aWVzOjpTZWFyY2hTdHJpbmdUeXBlOjpFeGFjdFN0cmluZzsKICAg
ICAgICAgYXV0byByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0ZVJlZ3VsYXJF
eHByZXNzaW9uRm9yU2VhcmNoU3RyaW5nKGludGVyY2VwdC51cmwsIGludGVyY2VwdC5jYXNlU2Vu
c2l0aXZlLCBzZWFyY2hTdHJpbmdUeXBlKTsKICAgICAgICAgaWYgKHJlZ2V4Lm1hdGNoKHVybFN0
cmluZykgIT0gLTEpCkBAIC04NjMsNiArODcxLDEzIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpzaG91bGRJbnRlcmNlcHQoVVJMIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpCit7Cisg
ICAgZm9yIChhdXRvJiBwZW5kaW5nUmVxdWVzdCA6IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3Rz
LnZhbHVlcygpKQorICAgICAgICBwZW5kaW5nUmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxS
ZXF1ZXN0KCk7CisgICAgbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY2xlYXIoKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNvbnRpbnVlUGVuZGluZ1Jlc3BvbnNlcygpCiB7
CiAgICAgZm9yIChhdXRvJiBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgOiBtX3BlbmRpbmdJbnRl
cmNlcHRSZXNwb25zZXMudmFsdWVzKCkpCkBAIC0xMDI4LDE4ICsxMDQzLDE4IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzZXRJbnRlcmNlcHRpb25FbmFibGVkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgYm9vCiAKICAgICBtX2ludGVyY2VwdGlvbkVuYWJsZWQgPSBlbmFibGVkOwog
Ci0gICAgaWYgKCFtX2ludGVyY2VwdGlvbkVuYWJsZWQpCisgICAgaWYgKCFtX2ludGVyY2VwdGlv
bkVuYWJsZWQpIHsKKyAgICAgICAgY29udGludWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICAgICAg
Y29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CisgICAgfQogfQogCi12b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6YWRkSW50ZXJjZXB0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcqIG5ldHdvcmtTdGFnZVN0cmluZykK
K3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjphZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3Rh
Z2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
b3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChuZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAg
ICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdlU3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3
b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93
biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtTdGFnZVN0cmluZyk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7
CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3Ry
aW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9zLCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNDgs
MjEgKzEwNjMsMTggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmFkZEludGVyY2VwdGlv
bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICAgICAgaW50ZXJjZXB0
LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25h
bElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5pc1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsK
LQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVyY2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRl
cmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1f
aW50ZXJjZXB0cy5hcHBlbmRJZk5vdENvbnRhaW5zKGludGVyY2VwdCkpCi0gICAgICAgIGVycm9y
U3RyaW5nID0gIkludGVyY2VwdCBmb3IgZ2l2ZW4gdXJsIGFuZCBnaXZlbiBpc1JlZ2V4IGFscmVh
ZHkgZXhpc3RzIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcmNlcHQgZm9yIGdpdmVu
IHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIGFscmVhZHkgZXhpc3RzIl9zOwog
fQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6cmVtb3ZlSW50ZXJjZXB0aW9uKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJp
bmcqIG5ldHdvcmtTdGFnZVN0cmluZykKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZW1v
dmVJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuZXR3b3JrU3RhZ2VTdHJpbmcsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQogewotICAgIGlmIChu
ZXR3b3JrU3RhZ2VTdHJpbmcpIHsKLSAgICAgICAgYXV0byBuZXR3b3JrU3RhZ2UgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TmV0d29ya1N0YWdlPigqbmV0d29ya1N0YWdl
U3RyaW5nKTsKLSAgICAgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKLSAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBuZXR3b3JrU3RhZ2U6ICJfcywgKm5ldHdvcmtT
dGFnZVN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIG5l
dHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3Jr
U3RhZ2U+KG5ldHdvcmtTdGFnZVN0cmluZyk7CisgICAgaWYgKCFuZXR3b3JrU3RhZ2UpIHsKKyAg
ICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIG5ldHdvcmtTdGFnZTogIl9z
LCBuZXR3b3JrU3RhZ2VTdHJpbmcpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSW50
ZXJjZXB0IGludGVyY2VwdDsKQEAgLTEwNzEsMTkgKzEwODMsMjcgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFMKICAgICAgICAgaW50ZXJjZXB0LmNhc2VTZW5zaXRpdmUgPSAqb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlOwogICAgIGlmIChvcHRpb25hbElzUmVnZXgpCiAgICAgICAgIGludGVyY2VwdC5p
c1JlZ2V4ID0gKm9wdGlvbmFsSXNSZWdleDsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVy
Y2VwdGluZyByZXF1ZXN0cy4KKyAgICBpbnRlcmNlcHQubmV0d29ya1N0YWdlID0gbmV0d29ya1N0
YWdlLnZhbHVlKCk7CiAKICAgICBpZiAoIW1faW50ZXJjZXB0cy5yZW1vdmVBbGwoaW50ZXJjZXB0
KSkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBpbnRlcmNlcHQgZm9yIGdpdmVuIHVy
bCBhbmQgZ2l2ZW4gaXNSZWdleCJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBp
bnRlcmNlcHQgZm9yIGdpdmVuIHVybCwgZ2l2ZW4gaXNSZWdleCwgYW5kIGdpdmVuIHN0YWdlIl9z
OwogfQogCi1ib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OndpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IGlmICghbV9pbnRlcmNlcHRpb25FbmFibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gc2hvdWxkSW50ZXJjZXB0KHJlcXVlc3QudXJsKCkpOworICAgIHJldHVybiBzaG91
bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXF1ZXN0KQorICAgICAg
ICB8fCBzaG91bGRJbnRlcmNlcHQocmVxdWVzdC51cmwoKSwgTmV0d29ya1N0YWdlOjpSZXNwb25z
ZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1faW50ZXJj
ZXB0aW9uRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNob3Vs
ZEludGVyY2VwdChyZXF1ZXN0LnVybCgpLCBOZXR3b3JrU3RhZ2U6OlJlcXVlc3QpOwogfQogCiBi
b29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDkxLDcgKzExMTEsMjEgQEAgYm9vbCBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAoIW1faW50ZXJjZXB0aW9uRW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51
cmwoKSk7CisgICAgcmV0dXJuIHNob3VsZEludGVyY2VwdChyZXNwb25zZS51cmwoKSwgTmV0d29y
a1N0YWdlOjpSZXNwb25zZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgaGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9l
bmFibGVkKTsKKyAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKKworICAgIFN0cmlu
ZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChsb2FkZXIuaWRlbnRp
ZmllcigpKTsKKyAgICBpZiAobV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHMuY29udGFpbnMocmVx
dWVzdElkKSkgeworICAgICAgICBoYW5kbGVyKGxvYWRlci5yZXF1ZXN0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnNldChyZXF1ZXN0
SWQsIG1ha2VVbmlxdWU8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+KCZsb2FkZXIsIFdURk1vdmUo
aGFuZGxlcikpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVk
KHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3Qo
KSkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCkBAIC0xMTExLDE1ICsxMTQ1LDY1IEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VJbnRl
cmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25z
ZSwgbnVsbHB0cikpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
Q29udGludWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRDb250aW51ZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IG5ldHdvcmtTdGFnZVN0cmluZykKIHsKLSAgICBhdXRvIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZSA9IG1fcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlcy50YWtlKHJlcXVlc3RJZCk7Ci0gICAgaWYg
KCFwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgIGF1dG8gbmV0d29ya1N0YWdlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9ySGVs
cGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6Ok5ldHdvcmtTdGFnZT4obmV0d29ya1N0YWdlU3RyaW5nKTsKKyAgICBpZiAoIW5ldHdvcmtT
dGFnZSkgeworICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gbmV0d29y
a1N0YWdlOiAiX3MsIG5ldHdvcmtTdGFnZVN0cmluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNw
b25zZSgpOworICAgIHN3aXRjaCAobmV0d29ya1N0YWdlLnZhbHVlKCkpIHsKKyAgICBjYXNlIE5l
dHdvcmtTdGFnZTo6UmVxdWVzdDoKKyAgICAgICAgaWYgKGF1dG8gcGVuZGluZ0ludGVyY2VwdFJl
cXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCkpCisgICAg
ICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVxdWVzdC0+Y29udGludWVXaXRoT3JpZ2luYWxSZXF1
ZXN0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
cGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlOgorICAgICAgICBpZiAo
YXV0byBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZXMudGFrZShyZXF1ZXN0SWQpKQorICAgICAgICAgICAgcGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
LT5yZXNwb25kV2l0aE9yaWdpbmFsUmVzcG9uc2UoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXNwb25zZSBmb3Ig
Z2l2ZW4gcmVxdWVzdElkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
V2l0aFJlcXVlc3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nKiB1cmwsIGNvbnN0IFN0cmluZyogbWV0aG9kLCBjb25zdCBKU09O
OjpPYmplY3QqIGhlYWRlcnMsIGNvbnN0IFN0cmluZyogcG9zdERhdGEpCit7CisgICAgYXV0byBw
ZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzLnRha2UocmVxdWVzdElk
KTsKKyAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVxdWVzdCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgbG9hZGVyID0gKnBlbmRpbmdSZXF1
ZXN0LT5tX2xvYWRlcjsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGxvYWRlci5yZXF1
ZXN0KCk7CisgICAgaWYgKHVybCkKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgKnVy
bCkpOworICAgIGlmIChtZXRob2QpCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgqbWV0
aG9kKTsKKyAgICBpZiAoaGVhZGVycykgeworICAgICAgICBIVFRQSGVhZGVyTWFwIGV4cGxpY2l0
SGVhZGVyczsKKyAgICAgICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiAqaGVhZGVycykgewor
ICAgICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlOworICAgICAgICAgICAgaWYgKHZhbHVlLT5h
c1N0cmluZyhoZWFkZXJWYWx1ZSkpCisgICAgICAgICAgICAgICAgZXhwbGljaXRIZWFkZXJzLmFk
ZChrZXksIGhlYWRlclZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXF1ZXN0LnNldEhUVFBI
ZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKKyAgICB9CisgICAgaWYgKHBv
c3REYXRhKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgICAgIGlmICgh
YmFzZTY0RGVjb2RlKCpwb3N0RGF0YSwgYnVmZmVyKSkgeworICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiVW5hYmxlIHRvIGRlY29kZSBnaXZlbiBwb3N0RGF0YSJfczsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6
OmNyZWF0ZShidWZmZXIpKTsKKyAgICB9CisgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgaG93IHRv
IGlkZW50aWZ5IHdoZW4gYSByZXF1ZXN0IGhhcyBiZWVuIG92ZXJyaWRkZW4gd2hlbiB3ZSBhZGQg
dGhpcyB0byB0aGUgZnJvbnRlbmQuCisgICAgcGVuZGluZ1JlcXVlc3QtPmNvbnRpbnVlV2l0aFJl
cXVlc3QocmVxdWVzdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0
IFN0cmluZyogbWltZVR5cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1
c1RleHQsIGNvbnN0IEpTT046Ok9iamVjdCogaGVhZGVycykKQEAgLTExNTgsNiArMTI0Miw3IEBA
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgICAgICBwZW5kaW5nSW50ZXJjZXB0UmVz
cG9uc2UtPnJlc3BvbmRXaXRoT3JpZ2luYWxSZXNwb25zZSgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisKICAgICAgICAgb3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKICAgICB9IGVsc2UKICAgICAgICAgb3ZlcnJpZGVEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50LnV0Zjgo
KS5sZW5ndGgoKSk7CkBAIC0xMTY1LDYgKzEyNTAsOTEgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnMKICAgICBwZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UtPnJlc3BvbmQob3ZlcnJpZGVSZXNwb25z
ZSwgb3ZlcnJpZGVEYXRhKTsKIH0KIAordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVy
Y2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29k
ZWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYgc3Rh
dHVzVGV4dCwgY29uc3QgSlNPTjo6T2JqZWN0JiBoZWFkZXJzKQoreworICAgIGF1dG8gcGVuZGlu
Z1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZCk7Cisg
ICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdpdmVuIHJlcXVlc3RJZCJfczsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIExvYWRlciB3aWxsIGJlIHJldGFpbmVkIGluIHRo
ZSBkaWRSZWNlaXZlUmVzcG9uc2UgbGFtYmRhIGJlbG93LgorICAgIFJlZlB0cjxSZXNvdXJjZUxv
YWRlcj4gbG9hZGVyID0gcGVuZGluZ1JlcXVlc3QtPm1fbG9hZGVyLmdldCgpOworICAgIGlmIChs
b2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAi
VW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQi
X3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CisgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRlbnQsIGJ1ZmZlcikpIHsKKyAg
ICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gY29udGVudCJf
czsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudC51dGY4KCkuZGF0YSgpLCBjb250ZW50
LnV0ZjgoKS5sZW5ndGgoKSk7CisKKyAgICAvLyBNaW1pYyBkYXRhIFVSTCBsb2FkIGJlaGF2aW9y
IC0gcmVwb3J0IGRpZFJlY2VpdmVSZXNwb25zZSAmIGRpZEZpbmlzaExvYWRpbmcuCisgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZShwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXItPnVybCgpLCBt
aW1lVHlwZSwgZGF0YS0+c2l6ZSgpLCBTdHJpbmcoKSk7CisgICAgcmVzcG9uc2Uuc2V0U291cmNl
KFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6SW5zcGVjdG9yT3ZlcnJpZGUpOworICAgIHJlc3Bv
bnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0YXR1cyk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1
c1RleHQoc3RhdHVzVGV4dCk7CisgICAgSFRUUEhlYWRlck1hcCBleHBsaWNpdEhlYWRlcnM7Cisg
ICAgZm9yIChhdXRvJiBba2V5LCB2YWx1ZV0gOiBoZWFkZXJzKSB7CisgICAgICAgIFN0cmluZyBo
ZWFkZXJWYWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlLT5hc1N0cmluZyhoZWFkZXJWYWx1ZSkpCisg
ICAgICAgICAgICBleHBsaWNpdEhlYWRlcnMuYWRkKGtleSwgaGVhZGVyVmFsdWUpOworICAgIH0K
KyAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGRzKFdURk1vdmUoZXhwbGljaXRIZWFkZXJz
KSk7CisgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50VHlwZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgbG9h
ZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCksIERh
dGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGlu
ZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlU3Ry
aW5nKQoreworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1
ZXN0cy50YWtlKHJlcXVlc3RJZCk7CisgICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgeworICAgICAg
ICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHBlbmRpbmcgaW50ZXJjZXB0IHJlcXVlc3QgZm9yIGdp
dmVuIHJlcXVlc3RJZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGxv
YWRlciA9ICpwZW5kaW5nUmVxdWVzdC0+bV9sb2FkZXI7CisgICAgaWYgKGxvYWRlci5yZWFjaGVk
VGVybWluYWxTdGF0ZSgpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlVuYWJsZSB0byBhYm9y
dCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfczsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlPihlcnJvclR5cGVTdHJpbmcpOworICAg
IGlmICghZXJyb3JUeXBlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5r
bm93biBlcnJvclR5cGU6ICJfcywgZXJyb3JUeXBlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgc3dpdGNoIChlcnJvclR5cGUu
dmFsdWUoKSkgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3Vy
Y2VFcnJvclR5cGU6OkdlbmVyYWw6CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCBsb2FkZXIudXJsKCksICJSZXF1ZXN0IGludGVyY2Vw
dGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZUVycm9yVHlwZTo6
QWNjZXNzQ29udHJvbDoKKyAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIGxvYWRlci51cmwoKSwgIkFjY2VzcyBkZW5pZWQiX3MsIFJlc291
cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpDYW5jZWxs
YXRpb246CisgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCBsb2FkZXIudXJsKCksICJSZXF1ZXN0IGNhbmNlbGVkIl9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlRXJyb3JUeXBlOjpUaW1lb3V0OgorICAg
ICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
bG9hZGVyLnVybCgpLCAiUmVxdWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6
OlRpbWVvdXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgbG9hZGVyLmRpZEZhaWwoZXJy
b3IpOworfQorCiBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikKQEAgLTExODEsNiArMTM1MSw3IEBA
IFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRl
eHREZWNvZGVyKGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Rl
eHRNSU1FVHlwZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUobWltZVR5cGUsICJVVEYtOCIpOworCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6
OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKSB7CiAgICAgICAgIGF1dG8gZGVjb2RlciA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIl9zKTsKICAgICAgICAgZGVj
b2Rlci0+dXNlTGVuaWVudFhNTERlY29kaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBiZmQxMzFl
OWI1ODU2Yzg0ZGE3NzI0ODA1ZTcxMzk3YjdjNzQ4NmE5Li4wM2I0Y2JhNDUyMDFhNWRmMDNkZDZm
MjhkOGZmMzA1NjYxNDY2MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTg4LDEwICs4OCwxMyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBzZXJpYWxpemVkQ2VydGlmaWNhdGUpIGZp
bmFsOwogICAgIHZvaWQgcmVzb2x2ZVdlYlNvY2tldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYpIGZpbmFsOwogICAgIHZvaWQgc2V0
SW50ZXJjZXB0aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgZmluYWw7Ci0g
ICAgdm9pZCBhZGRJbnRlcmNlcHRpb24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgY29uc3QgU3Ry
aW5nKiBuZXR3b3JrU3RhZ2VTdHJpbmcpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlSW50ZXJjZXB0
aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIGNhc2VTZW5z
aXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIGNvbnN0IFN0cmluZyogbmV0d29ya1N0YWdlU3Ry
aW5nKSBmaW5hbDsKLSAgICB2b2lkIGludGVyY2VwdENvbnRpbnVlKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQpIGZpbmFsOworICAgIHZvaWQgYWRkSW50ZXJjZXB0aW9uKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmV0d29ya1N0YWdl
U3RyaW5nLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4KSBm
aW5hbDsKKyAgICB2b2lkIHJlbW92ZUludGVyY2VwdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZywgY29uc3QgYm9vbCog
Y2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCkgZmluYWw7CisgICAgdm9pZCBpbnRl
cmNlcHRDb250aW51ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcmIG5ldHdvcmtTdGFnZVN0cmluZykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRX
aXRoUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcqIHVybCwgY29uc3QgU3RyaW5nKiBtZXRob2QsIGNvbnN0IEpTT046Ok9iamVjdCogaGVh
ZGVycywgY29uc3QgU3RyaW5nKiBwb3N0RGF0YSkgZmluYWw7CiAgICAgdm9pZCBpbnRlcmNlcHRX
aXRoUmVzcG9uc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGNvbnN0IFN0cmluZyogbWltZVR5
cGUsIGNvbnN0IGludCogc3RhdHVzLCBjb25zdCBTdHJpbmcqIHN0YXR1c1RleHQsIGNvbnN0IEpT
T046Ok9iamVjdCogaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0
aFJlc3BvbnNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIGNvbnN0IEpTT046Ok9iamVj
dCYgaGVhZGVycykgZmluYWw7CisgICAgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9yKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZXJyb3JU
eXBlKSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQg
d2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAgLTExOCw5ICsxMjEsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgbWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyJik7CiAgICAgdm9pZCBzZXRJ
bml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9u
KERvY3VtZW50Jik7Ci0gICAgYm9vbCB3aWxsSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CisgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lk
IGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1
ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmUHRyPEpTT046OkFy
cmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKICAgICB2
b2lkIHNlYXJjaEluUmVxdWVzdChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpT
ZWFyY2hNYXRjaD4+Jik7CkBAIC0xNDAsNyArMTQ1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAKLSAgICBib29sIHNob3Vs
ZEludGVyY2VwdChVUkwpOworICAgIHVzaW5nIE5ldHdvcmtTdGFnZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZTsKKyAgICBib29sIHNob3VsZEludGVyY2VwdChV
UkwsIE5ldHdvcmtTdGFnZSk7CisgICAgdm9pZCBjb250aW51ZVBlbmRpbmdSZXF1ZXN0cygpOwog
ICAgIHZvaWQgY29udGludWVQZW5kaW5nUmVzcG9uc2VzKCk7CiAKICAgICBXZWJTb2NrZXQqIHdl
YlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CkBAIC0xNTMsNiAr
MTYwLDMxIEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAKKyAgICBjbGFz
cyBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgcHVibGljOgorICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdChSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+IGxvYWRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIDogbV9sb2Fk
ZXIobG9hZGVyKQorICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQorICAgICAgICB7IH0KKworICAgICAgICB2b2lkIGNvbnRpbnVlV2l0
aE9yaWdpbmFsUmVxdWVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9sb2FkZXIt
PnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFu
ZGxlcihtX2xvYWRlci0+cmVxdWVzdCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY29u
dGludWVXaXRoUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIocmVxdWVzdCk7CisgICAgICAgIH0K
KworICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVxdWVzdCgpID0gZGVmYXVsdDsKKyAgICAgICAg
UmVmUHRyPFJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICB9OworCiAgICAgY2xhc3MgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlIHsKICAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKTsKICAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yMDQsMTUgKzIzNiwxOCBAQCBwcml2YXRlOgogICAg
ICAgICBTdHJpbmcgdXJsOwogICAgICAgICBib29sIGNhc2VTZW5zaXRpdmUgeyB0cnVlIH07CiAg
ICAgICAgIGJvb2wgaXNSZWdleCB7IGZhbHNlIH07CisgICAgICAgIE5ldHdvcmtTdGFnZSBuZXR3
b3JrU3RhZ2UgeyBOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlIH07CiAKICAgICAgICAgaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJbnRlcmNlcHQmIG90aGVyKSBjb25zdAogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gdXJsID09IG90aGVyLnVybAogICAgICAgICAgICAgICAgICYmIGNh
c2VTZW5zaXRpdmUgPT0gb3RoZXIuY2FzZVNlbnNpdGl2ZQotICAgICAgICAgICAgICAgICYmIGlz
UmVnZXggPT0gb3RoZXIuaXNSZWdleDsKKyAgICAgICAgICAgICAgICAmJiBpc1JlZ2V4ID09IG90
aGVyLmlzUmVnZXgKKyAgICAgICAgICAgICAgICAmJiBuZXR3b3JrU3RhZ2UgPT0gb3RoZXIubmV0
d29ya1N0YWdlOwogICAgICAgICB9CiAgICAgfTsKICAgICBWZWN0b3I8SW50ZXJjZXB0PiBtX2lu
dGVyY2VwdHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdD4+IG1fcGVuZGluZ0ludGVyY2VwdFJlcXVlc3RzOwogICAgIEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlPj4gbV9wZW5k
aW5nSW50ZXJjZXB0UmVzcG9uc2VzOwogCiAgICAgLy8gRklYTUU6IEluc3BlY3Rvck5ldHdvcmtB
Z2VudCBzaG91bGQgbm90IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApp
bmRleCA3ODczYmY5OWJkMjM0OTY2NDhjYmMzNDQ3MDQ4ODE4MjE1ODk0YzgxLi4zYTcxMTI3N2E4
YWE3YzRmMDM1OTBjMmZlNTc4M2EyNGFmODJhNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg0MSw3ICs4NDEs
NyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQogCiAgICAgcmVxdWVzdC51cGRhdGVSZWZlcnJl
clBvbGljeShkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA6IFJlZmVy
cmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdCgmZnJhbWUsIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJ
bnRlcmNlcHQoJmZyYW1lLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKICAgICAgICAgcmVx
dWVzdC5zZXRDYWNoaW5nUG9saWN5KENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZyk7CiAK
ICAgICBhdXRvJiBwYWdlID0gKmZyYW1lLnBhZ2UoKTsKQEAgLTE0MzEsNyArMTQzMSw3IEBAIFZl
Y3RvcjxSZWY8U1ZHSW1hZ2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsQ2FjaGVkU1ZHSW1h
Z2VzKCkgY29uc3QKIAogUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6
OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICBpZiAo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0UmVxdWVzdChmcmFtZSgpLCBy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsSW50ZXJjZXB0KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksICJJbnNw
ZWN0b3IgaW50ZXJjZXB0Il9zIH0pOwogCiAgICAgaWYgKHJlcXVlc3QuY2hhcnNldCgpLmlzRW1w
dHkoKSAmJiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0IHx8IHR5cGUgPT0g
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3
b3JrTWFuYWdlci5qcwppbmRleCA3ZGUzY2QyNTM5ZmMzZTZmOGI2Njk3MjQzYTM3ODk1N2E1NTJh
NTQ1Li5hMzM4NzM0NDdjOTBlYzY0M2JlZTMzMzE1YjNjOTJhZDFmYmZiYzA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3Jr
TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwpAQCAtMTU5LDkgKzE1OSw5IEBAIFdJLk5ldHdvcmtN
YW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUuZGlzYWJsZWQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmlu
dm9rZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsb2NhbFJlc291cmNlT3Zl
cnJpZGUudXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JC
YWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2Fz
ZVNlbnNpdGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJl
c291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3
b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXNw
b25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQpAQCAtMzY0LDcgKzM2NCw3IEBAIFdJLk5ldHdvcmtNYW5hZ2Vy
ID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAg
ICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2FzZVNl
bnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAg
ICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAgICAg
ICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdv
cmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2Vu
ZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsKIAog
ICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLmFkZEludGVy
Y2VwdGlvbiBkaWQgbm90IGV4aXN0LgpAQCAtMzk3LDcgKzM5Nyw3IEBAIFdJLk5ldHdvcmtNYW5h
Z2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAg
ICAgICB1cmw6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS51cmwsCiAgICAgICAgICAgICAgICAgY2Fz
ZVNlbnNpdGl2ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAg
ICAgICAgICAgICBpc1JlZ2V4OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUuaXNSZWdleCwKLSAgICAg
ICAgICAgICAgICBuZXR3b3JrU3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5l
dHdvcmtTdGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFj
a2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlc3BvbnNlLAogICAgICAgICAgICAgfTsK
IAogICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzLjApOiBOZXR3b3JrLnJlbW92
ZUludGVyY2VwdGlvbiBkaWQgbm90IGV4aXN0LgpAQCAtOTA4LDEyICs5MDgsMjEgQEAgV0kuTmV0
d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmRlbGV0ZShyZXF1ZXN0SWRl
bnRpZmllcik7CiAgICAgfQogCisgICAgcmVxdWVzdEludGVyY2VwdGVkKHRhcmdldCwgcmVxdWVz
dElkLCByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGFkZCByZXF1ZXN0IGludGVy
Y2VwdGlvbiBzdXBwb3J0IHRvIHRoZSBmcm9udGVuZC4KKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVk
LCB7dGFyZ2V0LCByZXF1ZXN0SWQsIHJlcXVlc3R9KTsKKyAgICB9CisKICAgICByZXNwb25zZUlu
dGVyY2VwdGVkKHRhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSkKICAgICB7CiAgICAgICAgIGxl
dCB1cmwgPSBXSS51cmxXaXRob3V0RnJhZ21lbnQocmVzcG9uc2UudXJsKTsKICAgICAgICAgbGV0
IGxvY2FsUmVzb3VyY2VPdmVycmlkZSA9IHRoaXMubG9jYWxSZXNvdXJjZU92ZXJyaWRlRm9yVVJM
KHVybCk7CiAgICAgICAgIGlmICghbG9jYWxSZXNvdXJjZU92ZXJyaWRlIHx8IGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZS5kaXNhYmxlZCkgewotICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5p
bnRlcmNlcHRDb250aW51ZShyZXF1ZXN0SWQpOworICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtB
Z2VudC5pbnRlcmNlcHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAgIHJlcXVlc3RJ
ZCwKKyAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsu
TmV0d29ya1N0YWdlLlJlc3BvbnNlLAorICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMTM3Niw3ICsxMzg1LDcgQEAgV0kuTmV0d29ya01hbmFnZXIg
PSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdXJs
OiBsb2NhbFJlc291cmNlT3ZlcnJpZGUudXJsLAogICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZTog
bG9jYWxSZXNvdXJjZU92ZXJyaWRlLmlzQ2FzZVNlbnNpdGl2ZSwKICAgICAgICAgICAgIGlzUmVn
ZXg6IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5pc1JlZ2V4LAotICAgICAgICAgICAgbmV0d29ya1N0
YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVzcG9uc2Us
CisgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29y
a1N0YWdlLlJlc3BvbnNlLAogICAgICAgICB9OwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyAxMy4wKTogTmV0d29yay5hZGRJbnRlcmNlcHRpb24gLyBOZXR3b3JrLnJlbW92ZUludGVy
Y2VwdGlvbiBkaWQgbm90IGV4aXN0LgpAQCAtMTQzMiw0ICsxNDQxLDUgQEAgV0kuTmV0d29ya01h
bmFnZXIuRXZlbnQgPSB7CiAgICAgQm9vdHN0cmFwU2NyaXB0RGVzdHJveWVkOiAibmV0d29yay1t
YW5hZ2VyLWJvb3RzdHJhcC1zY3JpcHQtZGVzdHJveWVkIiwKICAgICBMb2NhbFJlc291cmNlT3Zl
cnJpZGVBZGRlZDogIm5ldHdvcmstbWFuYWdlci1sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1hZGRl
ZCIsCiAgICAgTG9jYWxSZXNvdXJjZU92ZXJyaWRlUmVtb3ZlZDogIm5ldHdvcmstbWFuYWdlci1s
b2NhbC1yZXNvdXJjZS1vdmVycmlkZS1yZW1vdmVkIiwKKyAgICBSZXF1ZXN0SW50ZXJjZXB0ZWQ6
ICJuZXR3b3JrLW1hbmFnZXItcmVxdWVzdC1pbnRlcmNlcHRlZCIKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3
b3JrT2JzZXJ2ZXIuanMKaW5kZXggNTljMjljOWEzODRiMDQ3OGRkOGQ2ZDBjZjU5MjhiNjI5ODE4
MDBhYS4uZmU4ODI5YTcxYmZkMGVlZDg1NmI0MWMzYWFlY2U2YWU3ZjFhMTRkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09i
c2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL05ldHdvcmtPYnNlcnZlci5qcwpAQCAtMTA4LDYgKzEwOCwxMSBAQCBXSS5OZXR3b3JrT2Jz
ZXJ2ZXIgPSBjbGFzcyBOZXR3b3JrT2JzZXJ2ZXIgZXh0ZW5kcyBJbnNwZWN0b3JCYWNrZW5kLkRp
c3BhdGNoZXIKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KICAgICB9CiAKKyAg
ICByZXF1ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCByZXF1ZXN0KQorICAgIHsKKyAgICAgICAg
V0kubmV0d29ya01hbmFnZXIucmVxdWVzdEludGVyY2VwdGVkKHRoaXMuX3RhcmdldCwgcmVxdWVz
dElkLCByZXF1ZXN0KTsKKyAgICB9CisKICAgICByZXNwb25zZUludGVyY2VwdGVkKHJlcXVlc3RJ
ZCwgcmVzcG9uc2UpCiAgICAgewogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZXNwb25zZUlu
dGVyY2VwdGVkKHRoaXMuX3RhcmdldCwgcmVxdWVzdElkLCByZXNwb25zZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
aW5kZXggMGRkYjM1MzM0NDM4Nzg0ZmIyMTZmZGY3MTA4NDI5NzI2ZjJjNjY2Ny4uZmFhMWUxNjBm
NzQ4Y2IyZTM1YzBkNjdkMDE3NjliYWUzODJjZjg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNTgsNiAr
NTgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVsZW1lbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtU3RyYXRlZ2llcy5oPgpAQCAtMjI4LDYgKzIyOSwxMyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRS
ZXNvdQogCiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNl
TG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZ
X1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1
bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIik7CisKKyAgICAgICAgaWYgKCFyZXNvdXJjZUxv
YWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgJiYgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KHJlc291
cmNlTG9hZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKKyAgICAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChyZXNv
dXJjZUxvYWRlciwgW3RoaXMsIHByb3RlY3RlZFJlc291cmNlTG9hZGVyID0gbWFrZVJlZlB0cigm
cmVzb3VyY2VMb2FkZXIpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIHJlc291cmNlXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpIHsKKyAgICAgICAgICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3Mo
KnByb3RlY3RlZFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCB0cmFja2luZ1BhcmFtZXRlcnMsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lKHJlc291cmNlKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VM
b2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGlt
ZShyZXNvdXJjZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUwZDQxNWFjMzJl
ODcyNGJkZGU0ZjRmNTcxZTFiY2NjZWI4ZWZiM2IuLjYxY2U5NDQ5ODU2ZjFhMTQ0OTExNDVkNGFj
NjNkYzMyNjMyZWFjMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMC0wNi0wMyAgUGF2ZWwg
RmVsZG1hbiA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogaW50cm9kdWNlIHJlcXVlc3QgaW50ZXJjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0NDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIG5ldHdvcmsg
cmVxdWVzdCBpbnRlcmNlcHRpb24gdG8gdGhlIE5ldHdvcmsKKyAgICAgICAgcHJvdG9jb2wgZG9t
YWluLiBJdCBhZGRzIE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3Qgbm90aWZpY2F0aW9uIHRo
YXQKKyAgICAgICAgY2FuIGJlIGNvbnRpbnVlZCwgbW9kaWZpZWQgb3IgZnVsZmlsbGVkLiBOZXR3
b3JrU3RhZ2UgZW51bSBjYW4gbm93IGhhdmUKKyAgICAgICAgJ3JlcXVlc3QnIGFuZCAncmVzcG9u
c2UnIHZhbHVlcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LWNvbnRpbnVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1y
ZXF1ZXN0LWZyYWdtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1mcmFnbWVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1
ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0
aC1yZXNwb25zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS13aXRoLXJlc3Bv
bnNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
aW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJj
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2Utd2l0aC1lcnJvci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291
cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgt
cmVzcG9uc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVz
cG9uc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0
LWVjaG8ucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9pbnRlcmNlcHQtcmVxdWVzdC1vdmVycmlkZW4tcGFnZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNl
cHQtcmVxdWVzdC1vdmVycmlkZW4tc2NyaXB0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qczoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2Vw
dGVkLmpzb246IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAyMC0wNi0xMSAgT3Jpb2wgQnJ1ZmF1ICA8b2JydWZhdUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtjc3MtZ3JpZF0gUmVpbXBvcnQgV1BUIHRlc3RzIHJlbW92ZWQgaW4gcjI2Mjgw
OQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9p
bnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjFkMzhiODcxZDUxNjYwNmNjMTY1ODA3YTViYmQzNmUwMDY1YjI0
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvaW50ZXJjZXB0LWFib3J0ZWQtcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NiBAQAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IEFib3J0
RXJyb3I6IEZldGNoIGlzIGFib3J0ZWQKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uOiBBYm9ydEVycm9yOiBGZXRjaCBpcyBhYm9ydGVkCitUZXN0IHJlcXVlc3Qg
aW50ZXJjZXB0aW9uIG9mIHRoZSBhYm9ydGVkIHJlcXVlc3QuCisKKworPT0gUnVubmluZyB0ZXN0
IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuQWJvcnRlZAor
VHJpZ2dlcmluZyBsb2FkLi4uCitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCitF
cnJvcjogVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9j
ZXNzZWQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdp
dGhFcnJvci5BYm9ydGVkCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1BBU1M6IFNob3VsZCBwcm9kdWNl
IGFuIGV4Y2VwdGlvbi4KK0Vycm9yOiBVbmFibGUgdG8gYWJvcnQgcmVxdWVzdCwgaXQgaGFzIGFs
cmVhZHkgYmVlbiBwcm9jZXNzZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJl
cXVlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGRmM2IyOTQ5MDNlZTZiNDFhOTU1OWJmYTJhYWNkOTc5
YzRlYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtYWJvcnRlZC1yZXF1ZXN0Lmh0bWwKQEAgLTAsMCArMSw3NyBA
QAorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGZldGNoQW5kQWJvcnQoKSB7CisgICAgbGV0
IHVybCA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L292ZXJyaWRlLnR4dCI7CisgICAgbGV0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVy
KCk7CisgICAgbGV0IHsgc2lnbmFsIH0gPSBjb250cm9sbGVyOworICAgIGZldGNoKHVybCwgeyBz
aWduYWwgfSk7CisgICAgY29udHJvbGxlci5hYm9ydCgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIpOworCisgICAgTmV0d29ya0FnZW50LmFk
ZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4dCIsCisgICAgICAgIHN0
YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwK
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5BYm9ydGVkIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGZ1bGZpbGxzIGFib3J0ZWQg
cmVxdWVzdCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQgW3JlcXVlc3RJ
bnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBX
SS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVl
c3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZShgZmV0Y2hBbmRBYm9ydCgpYCksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAg
YXdhaXQgSW5zcGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4geworICAgICAg
ICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNl
Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdEludGVyY2Vw
dGVkRXZlbnQuZGF0YS5yZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNw
ZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgY29udGVudDogIkZBSUwiLAorICAgICAgICAgICAgICAgICAgICBiYXNlNjRF
bmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWlu
IiwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICAgICAgICAg
IHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LAorICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdFdpdGhFcnJvci5BYm9ydGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyBy
ZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IHJlamVjdHMgYWJvcnRlZCByZXF1ZXN0IiwKKyAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2Vy
aW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVkRXZlbnRd
ID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2Vy
LmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkKSwK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBmZXRjaEFuZEFi
b3J0KClgKSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXdhaXQg
TmV0d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IuaW52b2tlKHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudC5kYXRhLnJlcXVl
c3RJZCwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlOiBJbnNwZWN0b3JCYWNrZW5kLkVu
dW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5HZW5lcmFsLAorICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIG9mIHRoZSBhYm9ydGVk
IHJlcXVlc3QuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzI3NGM1
NjYyNjUyMTU2MDMwYTJkYTZjYThjM2QzOWY0NGY3OTI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1j
b250aW51ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCByZXF1ZXN0IGludGVy
Y2VwdGlvbiB0aGF0IGNvbnRpbnVlcyByZXF1ZXN0LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogTmV0d29yay5pbnRlcmNlcHRDb250aW51ZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25z
ZSBjb250ZW50OgorZnVuY3Rpb24gbXlTY3JpcHRKUygpIHt9CisKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZVdyb25nU3RhZ2UKK1RyaWdn
ZXJpbmcgbG9hZC4uLgorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorRXJyb3I6
IE1pc3NpbmcgcGVuZGluZyBpbnRlcmNlcHQgcmVzcG9uc2UgZm9yIGdpdmVuIHJlcXVlc3RJZAor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LkNvbnRpbnVl
V3JvbmdJZAorVHJpZ2dlcmluZyBsb2FkLi4uCitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNl
cHRpb24uCitFcnJvcjogTWlzc2luZyBwZW5kaW5nIGludGVyY2VwdCByZXF1ZXN0IGZvciBnaXZl
biByZXF1ZXN0SWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU4OTRjNDk0OTQ5MTJlOTcxZjc3NDhiOGViZDBkNDQ2YTBmOWZmYTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWNvbnRpbnVlLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkKK3sKKyAgICBsZXQgcmVzcG9uc2Ug
PSBhd2FpdCBmZXRjaCh1cmwpOworICAgIHJldHVybiBhd2FpdCByZXNwb25zZS50ZXh0KCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3Jl
YXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRDb250aW51ZSIpOworICAgIAorICAgIE5l
dHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zY3JpcHQuanMiLAor
ICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuTmV0d29ya1N0YWdl
LlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWUiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlRlc3RzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQgY29udGludWVzIiwKKyAgICAg
ICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBpbnRlcmNlcHRDb250aW51ZSA9IChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7IHRhcmdldCwgcmVxdWVzdElkLCByZXF1
ZXN0IH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNl
cHRDb250aW51ZS5pbnZva2UoeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAg
ICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3
b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29y
a01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAg
ICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBSdW50aW1lQWdlbnQuZXZhbHVhdGUoImZldGNo
RGF0YSgncmVzb3VyY2VzL3NjcmlwdC5qcycpIik7CisgICAgICAgICAgICByZXNwb25zZSA9IGF3
YWl0IFJ1bnRpbWVBZ2VudC5hd2FpdFByb21pc2UocmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0
cnVlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXNwb25zZSBjb250ZW50OiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cocmVzcG9uc2UucmVzdWx0LnZhbHVlKTsK
KyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuTmV0
d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCBpbnRlcmNlcHRDb250aW51ZSk7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5Db250aW51ZVdyb25nU3RhZ2UiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHRoYXQgY29udGlu
dWVzIHdpdGggdGhlIHdyb25nIHN0YWdlIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAg
ICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwor
ICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01h
bmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkKSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBmZXRjaERhdGEoJ3Jlc291cmNlcy9zY3JpcHQuanMnKWAp
LAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuZXhw
ZWN0RXhjZXB0aW9uKGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgICAgICBhd2FpdCBOZXR3b3Jr
QWdlbnQuaW50ZXJjZXB0Q29udGludWUuaW52b2tlKHsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudC5kYXRhLnJlcXVlc3RJZCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXNwb25zZSwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuQ29udGludWVXcm9uZ0lkIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IGludGVyY2VwdGlvbiB0aGF0IGNvbnRpbnVlcyB3aXRo
IHRoZSB3cm9uZyBzdGFnZSIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICBsZXQg
W3JlcXVlc3RJbnRlcmNlcHRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAg
ICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2
ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgZmV0Y2hEYXRhKCdyZXNvdXJjZXMvc2NyaXB0LmpzJylgKSwKKyAgICAg
ICAgICAgIF0pOworCisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4Y2Vw
dGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgYXdhaXQgTmV0d29ya0FnZW50Lmlu
dGVyY2VwdENvbnRpbnVlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZDog
Indyb25nSWQiLAorICAgICAgICAgICAgICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5F
bnVtLk5ldHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gdGhhdCBjb250aW51ZXMgcmVx
dWVzdC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3QtZnJhZ21lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2MWIwOGQ5NjFk
ZWI5NzE5ZDgwZmI5NzJhNjdmNWVlMzAwM2UyNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdt
ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0
aW9uIGluIGNvbWJpbmF0aW9uIHdpdGggZnJhZ21lbnRzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBz
dWl0ZTogTmV0d29yay5pbnRlcmNlcHRXaXRoUmVxdWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6
IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxXaXRob3V0RnJhZ21lbnRCYXNlbGluZQorVHJp
Z2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz9vbmUK
K1Jlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz9vbmUKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxXaXRoRnJhZ21lbnRCYXNlbGlu
ZQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNz
cz90d28jZnJhZ21lbnQKK1Jlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz90d28j
ZnJhZ21lbnQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dC5VUkxBZGRGcmFnbWVudAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IFVSTDogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNz
cworUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzI2ZyYWdtZW50CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMUmVtb3ZlRnJhZ21lbnQKK1RyaWdnZXJpbmcg
bG9hZC4uLgorUmVxdWVzdCBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MjZnJhZ21lbnQKK1Jlc3BvbnNlIFVSTDogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0
LmNzcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LWZyYWdtZW50Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgwYzI3YTdkMTAyNzZiZmJmYzAxMTZhN2M1ZDYxNDRjYWFlNmUxMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QtZnJhZ21lbnQuaHRtbApAQCAtMCwwICsxLDEwMCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
CitmdW5jdGlvbiBsb2FkU3VicmVzb3VyY2UodXJsKQoreworICAgIGxldCBsaW5rID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGluayIpOworICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOwor
ICAgIGxpbmsuaHJlZiA9IHVybDsKKyAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmsp
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QiKTsKKworICAg
IE5ldHdvcmtBZ2VudC5hZGRJbnRlcmNlcHRpb24uaW52b2tlKHsKKyAgICAgICAgdXJsOiAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0
LmNzcyIsCisgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5OZXR3
b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICB9KTsKKworICAgIGZ1bmN0aW9uIGFkZEJhc2VsaW5lVGVz
dENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9ufSkgeworICAgICAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb24s
CisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJUcmlnZ2VyaW5nIGxvYWQuLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgW3JlcXVl
c3RFdmVudCwgcmVzcG9uc2VFdmVudCwgZmV0Y2hSZXNwb25zZV0gPSBhd2FpdCBQcm9taXNlLmFs
bChbCisgICAgICAgICAgICAgICAgICAgIFdJLkZyYW1lLmF3YWl0RXZlbnQoV0kuRnJhbWUuRXZl
bnQuUmVzb3VyY2VXYXNBZGRlZCksCisgICAgICAgICAgICAgICAgICAgIFdJLlJlc291cmNlLmF3
YWl0RXZlbnQoV0kuUmVzb3VyY2UuRXZlbnQuUmVzcG9uc2VSZWNlaXZlZCksCisgICAgICAgICAg
ICAgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAgICAgICAgICAg
ICAgICBdKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdCBVUkw6
ICIgKyByZXF1ZXN0RXZlbnQuZGF0YS5yZXNvdXJjZS51cmwpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJSZXNwb25zZSBVUkw6ICIgKyByZXNwb25zZUV2ZW50LnRhcmdldC51
cmwpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisgICAgZnVuY3Rpb24gYWRk
VGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9uLCB1cmx9KSB7CisgICAgICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxl
dCBbcmVxdWVzdEV2ZW50LCByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudCwgZmV0Y2hSZXNwb25zZV0g
PSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJLkZyYW1lLmF3YWl0
RXZlbnQoV0kuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCksCisgICAgICAgICAgICAgICAg
ICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQu
UmVxdWVzdEludGVyY2VwdGVkKSwKKyAgICAgICAgICAgICAgICAgICAgUnVudGltZUFnZW50LmV2
YWx1YXRlKGV4cHJlc3Npb24pLAorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0IFVSTDogIiArIHJlcXVlc3RFdmVudC5kYXRhLnJl
c291cmNlLnVybCk7CisKKyAgICAgICAgICAgICAgICBsZXQgW3Jlc3BvbnNlRXZlbnQsIGludGVy
Y2VwdFJlc3BvbnNlXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICAgICAg
V0kuUmVzb3VyY2UuYXdhaXRFdmVudChXSS5SZXNvdXJjZS5FdmVudC5SZXNwb25zZVJlY2VpdmVk
KSwKKyAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0
Lmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRl
cmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgdXJs
LAorICAgICAgICAgICAgICAgICAgICB9KSwKKyAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVzcG9uc2UgVVJMOiAiICsgcmVzcG9uc2VFdmVu
dC50YXJnZXQudXJsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisKKyAg
ICBhZGRCYXNlbGluZVRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0
UmVxdWVzdC5VUkxXaXRob3V0RnJhZ21lbnRCYXNlbGluZSIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiVGVzdHMgcmVzcG9uc2UgdXJsIHdpdGhvdXQgZnJhZ21lbnQgLSBiYXNlbGluZSIsCisgICAg
ICAgIGV4cHJlc3Npb246ICJsb2FkU3VicmVzb3VyY2UoJ3Jlc291cmNlcy9zdHlsZXNoZWV0LXdp
dGgtc291cmNlbWFwLmNzcz9vbmUnKSIsCisgICAgfSk7CisKKyAgICBhZGRCYXNlbGluZVRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxXaXRoRnJh
Z21lbnRCYXNlbGluZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVzcG9uc2UgdXJs
IHdpdGggZnJhZ21lbnQgLSBiYXNlbGluZSIsCisgICAgICAgIGV4cHJlc3Npb246ICJsb2FkU3Vi
cmVzb3VyY2UoJ3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtc291cmNlbWFwLmNzcz90d28jZnJh
Z21lbnQnKSIsCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMQWRkRnJhZ21lbnQiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVyY2VwdGlvbiB3aXRoIFVSTCB3aXRoIGZy
YWdtZW50IiwKKyAgICAgICAgZXhwcmVzc2lvbjogImxvYWRTdWJyZXNvdXJjZSgncmVzb3VyY2Vz
L3N0eWxlc2hlZXQuY3NzJykiLAorICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzI2ZyYWdtZW50IiwKKyAg
ICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdC5VUkxSZW1vdmVGcmFnbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVz
dHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHRoYXQgcmVtb3ZlcyBmcmFnbWVudCIsCisg
ICAgICAgIGV4cHJlc3Npb246ICJsb2FkU3VicmVzb3VyY2UoJ3Jlc291cmNlcy9zdHlsZXNoZWV0
LmNzcyNmcmFnbWVudCcpIiwKKyAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIsCisgICAgfSk7CisKKyAg
ICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBp
biBjb21iaW5hdGlvbiB3aXRoIGZyYWdtZW50cy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjEyNTkwNDgzNWVmMTBiNmMwNjAzNGY2MTVmM2RlZjEx
OGY5ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKK0FMRVJUOiBPUklHSU5BTCBIVE1MIENPTlRFTlQKK0FMRVJUOiBSRVBM
QUNFRCBIVE1MIENPTlRFTlQKK092ZXJyaWRkZW4gcGFnZSBjb250ZW50CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3Vy
Y2Utd2l0aC1yZXNwb25zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIxMjU5MDQ4MzVlZjEw
YjZjMDYwMzRmNjE1ZjNkZWYxMThmOWVhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNv
dXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK0FMRVJUOiBP
UklHSU5BTCBIVE1MIENPTlRFTlQKK0FMRVJUOiBSRVBMQUNFRCBIVE1MIENPTlRFTlQKK092ZXJy
aWRkZW4gcGFnZSBjb250ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jYTAxMGRlY2FmZTkxNDJhN2U4ZDJhZjc5MjU0YWE4YjI2MjFkN2M5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbApAQCAtMCwwICsxLDQ0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25z
ZSIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0Lk1haW5SZXNvdXJjZSB3aXRoIHJlc3BvbnNlIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJNYWluIHJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gb24gbmV4
dCBwYWdlIGxvYWQgYW5kIGZ1bGZpbGxzIHJlcXVlc3QiLAorICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgYXdhaXQgTmV0d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2Uo
eworICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1tYWluLXJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRt
bCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3Jr
Lk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJ
Lm5ldHdvcmtNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2Vy
LkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
bGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAg
ICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLmludm9rZSh7
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgbWlt
ZVR5cGU6ICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgPCFET0NU
WVBFIGh0bWw+PGh0bWw+PGhlYWQ+PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3It
dGVzdC5qcyI+PC9gK2BzY3JpcHQ+PC9oZWFkPjxib2R5PjxwPk92ZXJyaWRkZW4gcGFnZSBjb250
ZW50PC9wPjxzY3JpcHQ+YWxlcnQoIlJFUExBQ0VEIEhUTUwgQ09OVEVOVCIpOyBUZXN0UGFnZS5j
b21wbGV0ZVRlc3QoKTs8L2ArYHNjcmlwdD48L2JvZHk+PC9odG1sPmAsCisgICAgICAgICAgICAg
ICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6
IDIwMCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAg
ICAgICAgICAgaGVhZGVyczoge30sCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdub3JlQ2Fj
aGU6IGZhbHNlLCByZXZhbGlkYXRlQWxsUmVzb3VyY2VzOiB0cnVlfSk7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJlcXVlc3QgaW50
ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgbWFpbiByZXNvdXJjZSBsb2FkIHdpdGggcmVzcG9u
c2UuPC9wPgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRNTCBDT05URU5UIik7PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qt
bWFpbi1yZXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5MDcxNzk2OWFkNTI2NmIyODg2NmE1YmJm
NDBjZWNkNzNiNjM3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2UuaHRtbApA
QCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3Vp
dGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuaW50ZXJjZXB0V2l0
aFJlcXVlc3QiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NYWluUmVzb3VyY2UiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIk1haW4gcmVzb3VyY2UgdXNlcyByZXF1ZXN0IGludGVyY2VwdGlvbiBvbiBuZXh0IHBhZ2Ug
bG9hZCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBhd2FpdCBOZXR3b3Jr
QWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1h
aW4tcmVzb3VyY2UuaHRtbCIsCisgICAgICAgICAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tl
bmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJ
Lk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwgcmVxdWVzdH0gPSBldmVudC5k
YXRhOworICAgICAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5p
bnZva2UoeworICAgICAgICAgICAgICAgICAgICB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1w
YWdlLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQsCisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVz
dC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6
IHRydWV9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5k
RmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gaW50ZXJjZXB0aW5nIHRoZSBtYWluIHJl
c291cmNlIGxvYWQuPC9wPgorPHNjcmlwdD5hbGVydCgiT1JJR0lOQUwgSFRNTCBDT05URU5UIik7
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2FmOWY2
Y2RiMjk1ZTBiNTJhMzc3NmRkNzU4YmQzOWMxOGQ5YzVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgzIEBACitUZXN0IHJlcXVlc3QgaW50
ZXJjZXB0aW9uIGFsdGVyaW5nIHJlcXVlc3QgcHJvcGVydGllcy4KKworCis9PSBSdW5uaW5nIHRl
c3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0V2l0aFJlcXVlc3QKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kCitUcmlnZ2VyaW5nIGxvYWQuLi4K
K1JlcXVlc3QgZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2lu
dGVyY2VwdC1lY2hvLnBocAorICBSZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9p
bnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDog
UE9TVAorICBSZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6IDAKKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2REZWxldGUKK1Ry
aWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBVUkk6IC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJlc3BvbnNlIFVSTDogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQtZWNo
by5waHAKKyAgTWV0aG9kOiBERUxFVEUKKyAgUmVxdWVzdCBIZWFkZXJzOgorICAgIENvbnRlbnQt
TGVuZ3RoOiAwCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVl
c3QuTWV0aG9kTm9uU3RhbmRhcmQKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxz
OgorICBVUkk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhw
CisgIFJlc3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBOT05TVEFOREFSRAorICBS
ZXF1ZXN0IEhlYWRlcnM6CisgICAgQ29udGVudC1MZW5ndGg6IDAKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2RFbXB0eQorVHJpZ2dlcmluZyBs
b2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBN
ZXRob2Q6IEdFVAorICBSZXF1ZXN0IEhlYWRlcnM6CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBO
ZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuVVJMCitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3Qg
ZGV0YWlsczoKKyAgVVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1l
Y2hvLnBocD9uZXdVUkw9dmFsdWUKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocD9uZXdVUkw9
dmFsdWUKKyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFkZXJzOgorICBHZXQ6CisgICAgbmV3
VVJMOiB2YWx1ZQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1
ZXN0LlVSTEZyYWdtZW50CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1JlcXVlc3QgZGV0YWlsczoKKyAg
VVJJOiAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBS
ZXNwb25zZSBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNv
dXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIE1ldGhvZDogR0VUCisgIFJlcXVlc3QgSGVhZGVy
czoKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxF
bXB0eQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0IGRldGFpbHM6CisgIFRoZSBVUkwgY2Fu
4oCZdCBiZSBzaG93bgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LkhlYWRlcnMKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVxdWVzdCBkZXRhaWxzOgorICBV
Ukk6IC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwCisgIFJl
c3BvbnNlIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKKyAgTWV0aG9kOiBHRVQKKyAgUmVxdWVzdCBIZWFkZXJz
OgorICAgIFgtVmFsdWU6IG92ZXJyaWRkZW4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdv
cmsuaW50ZXJjZXB0UmVxdWVzdC5Qb3N0RGF0YQorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXF1ZXN0
IGRldGFpbHM6CisgIFVSSTogL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRlcmNlcHQt
ZWNoby5waHAKKyAgUmVzcG9uc2UgVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocAorICBNZXRob2Q6IFBPU1QKKyAg
UmVxdWVzdCBIZWFkZXJzOgorICAgIENvbnRlbnQtTGVuZ3RoOiAxNgorICAgIENvbnRlbnQtVHlw
ZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCisgIFBvc3Q6CisgICAgdmFsdWU6
IG92ZXJyaWRkZW4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXByb3BlcnRp
ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMDhhNWRkZmE5NTQ5ZTkwZjZkZWE1NzQwNzBjZmZiYmUwZDE3
YzZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1wcm9wZXJ0aWVzLmh0bWwKQEAgLTAsMCArMSwxODEg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSh1cmwpCit7CisgICAgdHJ5IHsK
KyAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTsKKyAgICAgICAgLy8gRXZh
bCB0byBhY2NlcHQgdHJhaWxpbmcgY29tYSBKU09OLgorICAgICAgICBsZXQgZGF0YSA9IGV2YWwo
IigiICsgKGF3YWl0IHJlc3BvbnNlLnRleHQoKSB8fCAie30iKSArICIpIik7CisgICAgICAgIGRh
dGEucmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmw7CisgICAgICAgIHJldHVybiBkYXRhOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGUubWVzc2FnZSB9OworICAg
IH0KK30KKworYXN5bmMgZnVuY3Rpb24gcG9zdERhdGEodXJsKQoreworICAgIGxldCByZXNwb25z
ZSA9IGF3YWl0IGZldGNoKHVybCwgeworICAgICAgICBtZXRob2Q6ICJQT1NUIiwKKyAgICAgICAg
aGVhZGVyczogeworICAgICAgICAgICAgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi94LXd3
dy1mb3JtLXVybGVuY29kZWQiLAorICAgICAgICB9LAorICAgICAgICBib2R5OiAidmFsdWU9b3Jp
Z2luYWwiLAorICAgIH0pOworICAgIC8vIEV2YWwgdG8gYWNjZXB0IHRyYWlsaW5nIGNvbWEgSlNP
Ti4KKyAgICBsZXQgZGF0YSA9IGV2YWwoIigiICsgKGF3YWl0IHJlc3BvbnNlLnRleHQoKSB8fCAi
e30iKSArICIpIik7CisgICAgZGF0YS5yZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybDsKKyAgICBy
ZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5z
cGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFdpdGhSZXF1ZXN0
Iik7CisKKyAgICBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAg
IHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
aW50ZXJjZXB0LWVjaG8ucGhwIiwKKyAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51
bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAorICAgIH0pOworCisgICAgZnVuY3Rpb24g
bG9nUmVxdWVzdChyZXN1bHQpIHsKKyAgICAgICAgbGV0IHJlcXVlc3QgPSByZXN1bHQudmFsdWU7
CisgICAgICAgIGlmIChyZXF1ZXN0LmVycm9yKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhgICAke3JlcXVlc3QuZXJyb3J9YCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBVUkk6ICR7cmVxdWVzdC51cml9YCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFJlc3BvbnNlIFVSTDogJHtyZXF1ZXN0LnJl
c3BvbnNlVVJMfWApOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICBNZXRob2Q6ICR7cmVx
dWVzdC5tZXRob2R9YCk7CisgICAgICAgIGxldCBoZWFkZXJLZXlzID0gT2JqZWN0LmtleXMocmVx
dWVzdC5oZWFkZXJzKTsKKyAgICAgICAgaWYgKGhlYWRlcktleXMubGVuZ3RoKSB7CisgICAgICAg
ICAgICBoZWFkZXJLZXlzLnNvcnQoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAg
IFJlcXVlc3QgSGVhZGVyczpgKTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgaGVhZGVy
S2V5cykgeworICAgICAgICAgICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKCJYLSIpICYmICFu
YW1lLnN0YXJ0c1dpdGgoIkNvbnRlbnQtIikpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcXVlc3QuaGVhZGVyc1tuYW1lXTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IGdldEtleXMgPSBPYmplY3Qu
a2V5cyhyZXF1ZXN0LmdldCk7CisgICAgICAgIGlmIChnZXRLZXlzLmxlbmd0aCkgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiAgR2V0OiIpOworICAgICAgICAgICAgZ2V0S2V5cy5z
b3J0KCk7CisgICAgICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGdldEtleXMpIHsKKyAgICAgICAg
ICAgICAgICBsZXQgdmFsdWUgPSByZXF1ZXN0LmdldFtuYW1lXTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhgICAgICR7bmFtZX06ICR7dmFsdWV9YCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgbGV0IHBvc3RLZXlzID0gT2JqZWN0LmtleXMocmVxdWVzdC5w
b3N0KTsKKyAgICAgICAgaWYgKHBvc3RLZXlzLmxlbmd0aCkgeworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIiAgUG9zdDoiKTsKKyAgICAgICAgICAgIHBvc3RLZXlzLnNvcnQoKTsKKyAg
ICAgICAgICAgIGZvciAobGV0IG5hbWUgb2YgcG9zdEtleXMpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgdmFsdWUgPSByZXF1ZXN0LnBvc3RbbmFtZV07CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coYCAgICAke25hbWV9OiAke3ZhbHVlfWApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9u
LCBleHByZXNzaW9uLCBvdmVycmlkZXN9KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdn
ZXJpbmcgbG9hZC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbcmVxdWVzdEludGVyY2VwdGVk
RXZlbnQsIGZldGNoUmVzcG9uc2VdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5hd2FpdEV2ZW50KFdJLk5ldHdvcmtNYW5hZ2VyLkV2
ZW50LlJlcXVlc3RJbnRlcmNlcHRlZCksCisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVBZ2Vu
dC5ldmFsdWF0ZShleHByZXNzaW9uKSwKKyAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAg
ICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRXaXRoUmVxdWVzdC5pbnZva2Uoewor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJbnRlcmNlcHRlZEV2ZW50LmRh
dGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAuLi5vdmVycmlkZXMsCisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBSdW50
aW1lQWdlbnQuYXdhaXRQcm9taXNlKGZldGNoUmVzcG9uc2UucmVzdWx0Lm9iamVjdElkLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdCBkZXRhaWxzOiIp
OworICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3QocmVzcG9uc2UucmVzdWx0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZCIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhwcmVz
c2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAg
ICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIlBPU1QiIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuTWV0aG9kRGVs
ZXRlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNl
cHRpb24gd2l0aCBERUxFVEUiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hEYXRhKCdyZXNv
dXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6IHsgbWV0aG9k
OiAiREVMRVRFIiB9LAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Lk1ldGhvZE5vblN0YW5kYXJkIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRlcmNlcHRpb24gd2l0aCBOT05T
VEFOREFSRCIsCisgICAgICAgIGV4cHJlc3Npb246ICJmZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRl
cmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeyBtZXRob2Q6ICJOT05TVEFO
REFSRCIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5NZXRob2RFbXB0eSIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJjZXB0aW9uIHdpdGggZW1wdHkgc3RyaW5nIiwK
KyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hv
LnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IG1ldGhvZDogIiIgfSwKKyAgICB9KTsKKwor
ICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVz
dC5VUkwiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHJlcXVlc3QgbWV0aG9kIGludGVy
Y2VwdGlvbiB3aXRoIGRpZmZlcmVudCBVUkwiLAorICAgICAgICBleHByZXNzaW9uOiAiZmV0Y2hE
YXRhKCdyZXNvdXJjZXMvaW50ZXJjZXB0LWVjaG8ucGhwJykiLAorICAgICAgICBvdmVycmlkZXM6
IHsgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9pbnRlcmNlcHQtZWNoby5waHA/bmV3VVJMPXZhbHVlIiB9LAorICAgIH0pOworCisgICAgYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlVSTEZy
YWdtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IG1ldGhvZCBpbnRl
cmNlcHRpb24gd2l0aCBVUkwgd2l0aCBmcmFnbWVudCIsCisgICAgICAgIGV4cHJlc3Npb246ICJm
ZXRjaERhdGEoJ3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJy
aWRlczogeyB1cmw6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCNmcmFnbWVudCIgfSwKKyAgICB9KTsKKworICAgIGFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5VUkxF
bXB0eSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMgcmVxdWVzdCBtZXRob2QgaW50ZXJj
ZXB0aW9uIHdpdGggZW1wdHkgVVJMIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImZldGNoRGF0YSgn
cmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3ZlcnJpZGVzOiB7IHVy
bDogIiIgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5IZWFkZXJzIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJU
ZXN0cyByZXF1ZXN0IGhlYWRlcnMgaW50ZXJjZXB0aW9uIiwKKyAgICAgICAgZXhwcmVzc2lvbjog
ImZldGNoRGF0YSgncmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBocCcpIiwKKyAgICAgICAgb3Zl
cnJpZGVzOiB7IGhlYWRlcnM6IHsgIlgtVmFsdWUiOiAib3ZlcnJpZGRlbiIgfSB9LAorICAgIH0p
OworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LlBvc3REYXRhIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyByZXF1ZXN0IHBv
c3QgZGF0YSBpbnRlcmNlcHRpb24iLAorICAgICAgICBleHByZXNzaW9uOiAicG9zdERhdGEoJ3Jl
c291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAnKSIsCisgICAgICAgIG92ZXJyaWRlczogeworICAg
ICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCisgICAgICAgICAgICBwb3N0RGF0YTogYnRvYSgidmFs
dWU9b3ZlcnJpZGRlbiIpLAorICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzxwPlRlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gYWx0ZXJpbmcgcmVxdWVz
dCBwcm9wZXJ0aWVzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVz
b3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGU1ZjRlMDdlZmI2MjZhM2ZhM2ZjZTk1NmQzYzUxMWY5ODAyM2FhZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0
LXJlcXVlc3Qtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQUxFUlQ6
IERFRkFVTFQgb3ZlcnJpZGUuanMgVEVYVAorQUxFUlQ6IE9WRVJSSURFTiBvdmVycmlkZS5qcyBU
RVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIGludGVyY2VwdGluZyB0aGUgc3VicmVzb3Vy
Y2UgbG9hZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuaW50ZXJjZXB0UmVx
dWVzdAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJy
ZXNvdXJjZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtZXJyb3ItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQt
cmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MjQ4ZWVlOTAwMjI1OGE4MmYzZGYyOTU4MzQ1MjY3ODBkNjMxNDYxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVx
dWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBA
CitDT05TT0xFIE1FU1NBR0U6IEFjY2VzcyBkZW5pZWQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRp
b24gd2l0aCBlcnJvciBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisKKworPT0gUnVubmluZyB0
ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoRXJyb3IKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCBnZW5l
cmFsIGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxVUkUgVEVYVDogUmVxdWVzdCBpbnRl
cmNlcHRlZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0
LlN1YnJlc291cmNlIHdpdGggYWNjZXNzIGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxV
UkUgVEVYVDogQWNjZXNzIGRlbmllZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5p
bnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggY2FuY2VsZWQgZXJyb3IKK1RyaWdnZXJp
bmcgbG9hZC4uLgorRkFJTFVSRSBURVhUOiBSZXF1ZXN0IGNhbmNlbGVkCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCB0aW1l
b3V0IGVycm9yCitUcmlnZ2VyaW5nIGxvYWQuLi4KK0ZBSUxVUkUgVEVYVDogUmVxdWVzdCB0aW1l
ZCBvdXQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLWVycm9yLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1
YnJlc291cmNlLXdpdGgtZXJyb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2RmNTRiOWE5ZmVlOTIwY2I4
MTA0OTZlY2YwZTgzNTkzNGYwNGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13
aXRoLWVycm9yLmh0bWwKQEAgLTAsMCArMSw3OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2Fk
U3VicmVzb3VyY2UoKQoreworICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
bGluayIpOworICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOworICAgIGxpbmsuaHJlZiA9ICJy
ZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiOworICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQo
bGluayk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3Rv
clRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aEVycm9y
Iik7CisKKyAgICBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7CisgICAgICAg
IHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
c3R5bGVzaGVldC5jc3MiLAorICAgICAgICBzdGFnZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5l
dHdvcmsuTmV0d29ya1N0YWdlLlJlcXVlc3QsCisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBhZGRU
ZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Npb24sIGVycm9yVHlwZX0pIHsKKyAg
ICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAg
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7CisgICAgICAgICAgICAg
ICAgbGV0IFtyZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudCwgZmV0Y2hSZXNwb25zZV0gPSBhd2FpdCBQ
cm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmF3YWl0
RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkKSwKKyAgICAg
ICAgICAgICAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlKCJsb2FkU3VicmVzb3VyY2UoKSIp
LAorICAgICAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAgICAgbGV0IFtsb2FkaW5nRGlk
RmFpbEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICAgICAgV0ku
UmVzb3VyY2UuYXdhaXRFdmVudChXSS5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmFpbCksCisg
ICAgICAgICAgICAgICAgICAgIGF3YWl0IE5ldHdvcmtBZ2VudC5pbnRlcmNlcHRSZXF1ZXN0V2l0
aEVycm9yLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVl
c3RJbnRlcmNlcHRlZEV2ZW50LmRhdGEucmVxdWVzdElkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3JUeXBlLAorICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIF0p
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMVVJFIFRFWFQ6ICIgKyBs
b2FkaW5nRGlkRmFpbEV2ZW50LnRhcmdldC5mYWlsdXJlUmVhc29uVGV4dCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdC5TdWJyZXNvdXJjZSB3aXRoIGdlbmVyYWwgZXJy
b3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRl
cmNlcHRpb24gd2l0aCBnZW5lcmFsIGVycm9yIiwKKyAgICAgICAgZXJyb3JUeXBlOiBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uTmV0d29yay5SZXNvdXJjZUVycm9yVHlwZS5HZW5lcmFsLAorICAgIH0p
OworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRS
ZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggYWNjZXNzIGVycm9yIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJTdWJyZXNvdXJjZSB1c2VzIHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggYWNjZXNzIGVy
cm9yIiwKKyAgICAgICAgZXJyb3JUeXBlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0d29yay5S
ZXNvdXJjZUVycm9yVHlwZS5BY2Nlc3NDb250cm9sLAorICAgIH0pOworCisgICAgYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNl
IHdpdGggY2FuY2VsZWQgZXJyb3IiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNl
IHVzZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCBjYW5jZWxlZCBlcnJvciIsCisgICAgICAg
IGVycm9yVHlwZTogSW5zcGVjdG9yQmFja2VuZC5FbnVtLk5ldHdvcmsuUmVzb3VyY2VFcnJvclR5
cGUuQ2FuY2VsbGF0aW9uLAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291cmNlIHdpdGggdGltZW91dCBl
cnJvciIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU3VicmVzb3VyY2UgdXNlcyByZXF1ZXN0IGlu
dGVyY2VwdGlvbiB3aXRoIHRpbWVvdXQgZXJyb3IiLAorICAgICAgICBlcnJvclR5cGU6IEluc3Bl
Y3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLlJlc291cmNlRXJyb3JUeXBlLlRpbWVvdXQsCisgICAg
fSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVy
Y2VwdGlvbiB3aXRoIGVycm9yIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZDcwYTE2NmM3NjkxM2E4ZWRlMzM4MmViOWMyZjhlZjk5MmVhNzgyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDggQEAKK0FMRVJUOiBERUZBVUxUIG92ZXJyaWRlLmpzIFRFWFQKK0FMRVJUOiBPVkVSUklE
REVOIG92ZXJyaWRlLmpzIFRFWFQKK1Rlc3QgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNw
b25zZSBmb3IgdGhlIHN1YnJlc291cmNlIGxvYWQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRl
OiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3VyY2Ugd2l0aCByZXNwb25zZQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2lu
dGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdpdGgtcmVzcG9uc2UuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVz
b3VyY2Utd2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZjY1MzRkNGIyODRlZDBlYzg1
Yzc0NjI0ZmE3ZDMwZmYzYTEwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtcmVzcG9uc2UuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5l
dHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZSIpOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0LlN1YnJlc291
cmNlIHdpdGggcmVzcG9uc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVz
ZXMgcmVxdWVzdCBpbnRlcmNlcHRpb24gd2l0aCByZXNwb25zZSIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBhd2FpdCBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmlu
dm9rZSh7CisgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS5qcyIsCisgICAgICAgICAgICAgICAgc3Rh
Z2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtTdGFnZS5SZXF1ZXN0LAor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnNpbmdsZUZp
cmVFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50LlJlcXVlc3RJbnRlcmNlcHRl
ZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHt0YXJnZXQsIHJlcXVlc3RJZCwg
cmVxdWVzdH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5pbnRl
cmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLmludm9rZSh7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgbWltZVR5cGU6ICJ0ZXh0L2phdmFzY3JpcHQi
LAorICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgYWxlcnQoIk9WRVJSSURERU4gb3ZlcnJp
ZGUuanMgVEVYVCIpOyBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiT3ZlcnJpZGVD
b250ZW50RGlkTG9hZCIpO2AsCisgICAgICAgICAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZh
bHNlLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDIwMCwKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge30sCisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXdhaXQg
SW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtpZ25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVB
bGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuYXdh
aXRFdmVudCgiT3ZlcnJpZGVDb250ZW50RGlkTG9hZCIpOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlv
biB3aXRoIHJlc3BvbnNlIGZvciB0aGUgc3VicmVzb3VyY2UgbG9hZC48L3A+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL292ZXJyaWRlLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJj
ZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtc3VicmVzb3VyY2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZjU4NzljMTc5ZTJkMzBmOWY4Y2ZkMjY2ZDM5ODU2ODhhZDY4NzRhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5
bmNTdWl0ZSgiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3QuU3VicmVzb3Vy
Y2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlN1YnJlc291cmNlIHVzZXMgcmVxdWVzdCBpbnRl
cmNlcHRpb24iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgTmV0
d29ya0FnZW50LmFkZEludGVyY2VwdGlvbi5pbnZva2UoeworICAgICAgICAgICAgICAgIHVybDog
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvb3ZlcnJp
ZGUuanMiLAorICAgICAgICAgICAgICAgIHN0YWdlOiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uTmV0
d29yay5OZXR3b3JrU3RhZ2UuUmVxdWVzdCwKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
V0kubmV0d29ya01hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuTmV0d29ya01hbmFn
ZXIuRXZlbnQuUmVxdWVzdEludGVyY2VwdGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICBsZXQge3RhcmdldCwgcmVxdWVzdElkLCByZXF1ZXN0fSA9IGV2ZW50LmRhdGE7CisgICAgICAg
ICAgICAgICAgTmV0d29ya0FnZW50LmludGVyY2VwdFdpdGhSZXF1ZXN0Lmludm9rZSh7CisgICAg
ICAgICAgICAgICAgICAgIHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcyIsCisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHtp
Z25vcmVDYWNoZTogZmFsc2UsIHJldmFsaWRhdGVBbGxSZXNvdXJjZXM6IHRydWV9KTsKKyAgICAg
ICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiT3ZlcnJpZGVDb250ZW50RGlk
TG9hZCIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRG
aW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorPHA+VGVzdCByZXF1ZXN0IGludGVyY2VwdGlvbiBpbnRlcmNlcHRpbmcgdGhlIHN1YnJlc291
cmNlIGxvYWQuPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vdmVycmlkZS5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVzcG9uc2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNl
cHQtcmVxdWVzdC13aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTBiNWJh
N2RiOGZkMjBjOWMzOWEyZTc4NWVjNjE4NDlmOTczOGUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC13
aXRoLXJlc3BvbnNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcxIEBACitBTEVSVDogREVGQVVM
VCBvdmVycmlkZS5qcyBURVhUCitUZXN0IHJlcXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9u
c2UuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RX
aXRoUmVzcG9uc2UKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVl
c3RXaXRoUmVzcG9uc2UuVGV4dAorVHJpZ2dlcmluZyBsb2FkLi4uCitSZXNwb25zZSBkZXRhaWxz
OgorICBVUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvb3ZlcnJpZGUudHh0CisgIE1JTUUgVHlwZTogdGV4dC9wbGFpbgorICBTdGF0dXM6IDk4NyBP
dmVycmlkZSBTdGF0dXMgVGV4dAorICBSZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtdHlw
ZTogdGV4dC9wbGFpbgorICAgIHgtb3ZlcnJpZGUtaGVhZGVyLTE6IE92ZXJyaWRlLUhlYWRlci1W
YWx1ZS0xCisgICAgeC1vdmVycmlkZS1oZWFkZXItMjogT3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTIK
KyAgQ29udGVudDogUEFTUyAtIE9WRVJSSURERU4gVEVYVAorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkphdmFTY3JpcHQKK1RyaWdn
ZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJMOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4dAorICBNSU1FIFR5
cGU6IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQKKyAgU3RhdHVzOiAyMDAgU3VwZXIgT0sKKyAgUmVz
cG9uc2UgSGVhZGVyczoKKyAgICBjb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQK
KyAgICB4LWN1c3RvbS1oZWFkZXI6IEhlYWRlciB2YWx1ZQorICBDb250ZW50OiAvKiBQQVNTICov
IChmdW5jdGlvbigpIHsgLyogT1ZFUlJJRERFTiAqLyB9KSgpOworCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLkltYWdlCitUcmlnZ2Vy
aW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQKKyAgTUlNRSBUeXBl
OiBpbWFnZS9wbmcKKyAgU3RhdHVzOiAyMDAgT0sKKyAgUmVzcG9uc2UgSGVhZGVyczoKKyAgICBj
b250ZW50LXR5cGU6IGltYWdlL3BuZworICBDb250ZW50OiA8ZGF0YT4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuUXVlcnlT
dHJpbmcKK1RyaWdnZXJpbmcgbG9hZC4uLgorUmVzcG9uc2UgZGV0YWlsczoKKyAgVVJMOiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL292ZXJyaWRlLnR4
dD9zPTIKKyAgTUlNRSBUeXBlOiB0ZXh0L3BsYWluCisgIFN0YXR1czogMjAwIE9LCisgIFJlc3Bv
bnNlIEhlYWRlcnM6CisgICAgY29udGVudC10eXBlOiB0ZXh0L3BsYWluCisgICAgeC1leHBlY3Rl
ZDogUEFTUworICBDb250ZW50OiBQQVNTCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3Jr
LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuVVJMLkZyYWdtZW50CitUcmlnZ2VyaW5nIGxv
YWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQKKyAgTUlNRSBUeXBlOiB0ZXh0
L3BsYWluCisgIFN0YXR1czogMjAwIE9LCisgIFJlc3BvbnNlIEhlYWRlcnM6CisgICAgY29udGVu
dC10eXBlOiB0ZXh0L3BsYWluCisgICAgeC1leHBlY3RlZDogUEFTUworICBDb250ZW50OiBQQVNT
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UuNDA0CitUcmlnZ2VyaW5nIGxvYWQuLi4KK1Jlc3BvbnNlIGRldGFpbHM6CisgIFVSTDog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlk
ZS50eHQKKyAgTUlNRSBUeXBlOiB0ZXh0L3BsYWluCisgIFN0YXR1czogNDA0IE5vdCBGb3VuZAor
ICBSZXNwb25zZSBIZWFkZXJzOgorICAgIGNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbgorICAgIHgt
ZXhwZWN0ZWQ6IFBBU1MKKyAgQ29udGVudDogUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgtcmVz
cG9uc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5NzEzM2UwNzUw
MThkY2VjODVmMjk2NzI5NzFhOTQ5ZjliZDZmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXdpdGgt
cmVzcG9uc2UuaHRtbApAQCAtMCwwICsxLDE3NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlv
biB0cmlnZ2VyT3ZlcnJpZGVMb2FkKHVybFN1ZmZpeCkgeworICAgIGxldCB1cmwgPSAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9vdmVycmlkZS50eHQi
OworICAgIGlmICh1cmxTdWZmaXgpCisgICAgICAgIHVybCArPSB1cmxTdWZmaXg7CisKKyAgICB0
cnkgeworICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpOworICAgICAgICBy
ZXR1cm4geworICAgICAgICAgICAgdXJsOiByZXNwb25zZS51cmwsCisgICAgICAgICAgICB0ZXh0
OiBhd2FpdCByZXNwb25zZS50ZXh0KCksCisgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0
YXR1cywKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsCisgICAg
ICAgICAgICBoZWFkZXJzOiBBcnJheS5mcm9tKHJlc3BvbnNlLmhlYWRlcnMpLAorICAgICAgICB9
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGUubWVzc2FnZSB9
OworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVz
cG9uc2UiKTsKKyAgICAKKyAgICBOZXR3b3JrQWdlbnQuYWRkSW50ZXJjZXB0aW9uLmludm9rZSh7
CisgICAgICAgIHVybDogIi4qb3ZlcnJpZGVcLnR4dC4qIiwKKyAgICAgICAgaXNSZWdleDogdHJ1
ZSwKKyAgICAgICAgc3RhZ2U6IEluc3BlY3RvckJhY2tlbmQuRW51bS5OZXR3b3JrLk5ldHdvcmtT
dGFnZS5SZXF1ZXN0LAorICAgIH0pOworCisgICAgZnVuY3Rpb24gbG9nUmVzcG9uc2UocmVzcG9u
c2UpIHsKKyAgICAgICAgcmVzcG9uc2UuaGVhZGVycyA9IG5ldyBNYXAocmVzcG9uc2UuaGVhZGVy
cyk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIFVSTDogJHtyZXNwb25zZS51cmx9YCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAgIE1JTUUgVHlwZTogJHtyZXNwb25zZS5oZWFk
ZXJzLmdldCgiY29udGVudC10eXBlIil9YCk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAg
IFN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYCAgUmVzcG9uc2UgSGVhZGVyczpgKTsKKyAgICAgICAg
bGV0IGtleXMgPSBBcnJheS5mcm9tKHJlc3BvbnNlLmhlYWRlcnMua2V5cygpKTsKKyAgICAgICAg
a2V5cy5zb3J0KCk7CisgICAgICAgIGZvciAobGV0IG5hbWUgb2Yga2V5cykgeworICAgICAgICAg
ICAgbGV0IHZhbHVlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQobmFtZSk7CisgICAgICAgICAgICBp
ZiAoIW5hbWUuc3RhcnRzV2l0aCgieC0iKSAmJiAhbmFtZS5zdGFydHNXaXRoKCJjb250ZW50LSIp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coYCAgICAke25hbWV9OiAke3ZhbHVlfWApOworICAgICAgICB9CisgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKGAgIENvbnRlbnQ6ICR7cmVzcG9uc2UudGV4dH1gKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBhZGRUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIGV4cHJlc3Npb24sIHJlc3Bv
bnNlRGF0YX0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFt
ZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBsb2FkLi4uIik7
CisgICAgICAgICAgICAgICAgbGV0IFtyZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudCwgZmV0Y2hSZXNw
b25zZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJLm5ldHdv
cmtNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuTmV0d29ya01hbmFnZXIuRXZlbnQuUmVxdWVzdEludGVy
Y2VwdGVkKSwKKyAgICAgICAgICAgICAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlKGV4cHJl
c3Npb24pLAorICAgICAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAgICAgYXdhaXQgTmV0
d29ya0FnZW50LmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuaW52b2tlKHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SW50ZXJjZXB0ZWRFdmVudC5kYXRhLnJlcXVl
c3RJZCwKKyAgICAgICAgICAgICAgICAgICAgLi4ucmVzcG9uc2VEYXRhLAorICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgUnVudGltZUFn
ZW50LmF3YWl0UHJvbWlzZShmZXRjaFJlc3BvbnNlLnJlc3VsdC5vYmplY3RJZCwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlc3BvbnNlIGRldGFpbHM6Iik7Cisg
ICAgICAgICAgICAgICAgbG9nUmVzcG9uc2UocmVzcG9uc2UucmVzdWx0LnZhbHVlKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTmV0d29yay5pbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlLlRleHQiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIkludGVyY2VwdCByZXF1ZXN0IHdpdGggdGV4dCBjb250ZW50LiIs
CisgICAgICAgIGV4cHJlc3Npb246IGB0cmlnZ2VyT3ZlcnJpZGVMb2FkKClgLAorICAgICAgICBy
ZXNwb25zZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRlbnQ6IGBQQVNTIC0gT1ZFUlJJRERFTiBU
RVhUYCwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAgICAgbWlt
ZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1czogOTg3LAorICAgICAgICAg
ICAgc3RhdHVzVGV4dDogIk92ZXJyaWRlIFN0YXR1cyBUZXh0IiwKKyAgICAgICAgICAgIGhlYWRl
cnM6IHsKKyAgICAgICAgICAgICAgICAiWC1PdmVycmlkZS1IZWFkZXItMSI6ICJPdmVycmlkZS1I
ZWFkZXItVmFsdWUtMSIsCisgICAgICAgICAgICAgICAgIlgtT3ZlcnJpZGUtSGVhZGVyLTIiOiAi
T3ZlcnJpZGUtSGVhZGVyLVZhbHVlLTIiLAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAg
ICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJj
ZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5KYXZhU2NyaXB0IiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJJbnRlcmNlcHQgcmVxdWVzdCB3aXRoIGphdmFzY3JpcHQgY29udGVudC4iLAorICAgICAgICBl
eHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRh
OiB7CisgICAgICAgICAgICBjb250ZW50OiBgLyogUEFTUyAqLyAoZnVuY3Rpb24oKSB7IC8qIE9W
RVJSSURERU4gKi8gfSkoKTtgLAorICAgICAgICAgICAgYmFzZTY0RW5jb2RlZDogZmFsc2UsCisg
ICAgICAgICAgICBtaW1lVHlwZTogImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLAorICAgICAgICAg
ICAgc3RhdHVzOiAyMDAsCisgICAgICAgICAgICBzdGF0dXNUZXh0OiAiU3VwZXIgT0siLAorICAg
ICAgICAgICAgaGVhZGVyczogeworICAgICAgICAgICAgICAgICJYLUN1c3RvbS1IZWFkZXIiOiAi
SGVhZGVyIHZhbHVlIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAg
ICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RX
aXRoUmVzcG9uc2UuSW1hZ2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkludGVyY2VwdCByZXF1
ZXN0IHdpdGggaW1hZ2UgY29udGVudC4iLAorICAgICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92
ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9uc2VEYXRhOiB7CisgICAgICAgICAgICBjb250
ZW50OiBidG9hKCI8ZGF0YT4iKSwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IHRydWUsCisg
ICAgICAgICAgICBtaW1lVHlwZTogImltYWdlL3BuZyIsCisgICAgICAgICAgICBzdGF0dXM6IDIw
MCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJPSyIsCisgICAgICAgICAgICBoZWFkZXJzOiB7
fSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuUXVlcnlTdHJpbmci
LAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgb3ZlcnJpZGVzIHdpdGggZGlmZmVyZW50IHF1
ZXJ5IHN0cmluZ3MuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxvYWQo
Ij9zPTIiKWAsCisgICAgICAgIHJlc3BvbnNlRGF0YTogeworICAgICAgICAgICAgYmFzZTY0RW5j
b2RlZDogZmFsc2UsCisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBt
aW1lVHlwZTogInRleHQvcGxhaW4iLAorICAgICAgICAgICAgc3RhdHVzOiAyMDAsCisgICAgICAg
ICAgICBzdGF0dXNUZXh0OiAiT0siLAorICAgICAgICAgICAgaGVhZGVyczogeyJYLUV4cGVjdGVk
IjogIlBBU1MifSwKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIk5ldHdvcmsuaW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zZS5VUkwuRnJh
Z21lbnQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3Qgb3ZlcnJpZGUgZm9yIGEgbG9hZCB3
aXRoIGEgZnJhZ21lbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYHRyaWdnZXJPdmVycmlkZUxv
YWQoIiNmcmFnIilgLAorICAgICAgICByZXNwb25zZURhdGE6IHsKKyAgICAgICAgICAgIGNvbnRl
bnQ6ICJQQVNTIiwKKyAgICAgICAgICAgIGJhc2U2NEVuY29kZWQ6IGZhbHNlLAorICAgICAgICAg
ICAgbWltZVR5cGU6ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgICAgIHN0YXR1czogMjAwLAorICAg
ICAgICAgICAgc3RhdHVzVGV4dDogIk9LIiwKKyAgICAgICAgICAgIGhlYWRlcnM6IHsiWC1FeHBl
Y3RlZCI6ICJQQVNTIn0sCisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UuNDA0
IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IGZvciBhIDQwNCBvdmVycmlkZS4iLAorICAg
ICAgICBleHByZXNzaW9uOiBgdHJpZ2dlck92ZXJyaWRlTG9hZCgpYCwKKyAgICAgICAgcmVzcG9u
c2VEYXRhOiB7CisgICAgICAgICAgICBjb250ZW50OiAiUEFTUyIsCisgICAgICAgICAgICBiYXNl
NjRFbmNvZGVkOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbWVUeXBlOiAidGV4dC9wbGFpbiIsCisg
ICAgICAgICAgICBzdGF0dXM6IDQwNCwKKyAgICAgICAgICAgIHN0YXR1c1RleHQ6ICJOb3QgRm91
bmQiLAorICAgICAgICAgICAgaGVhZGVyczogeyJYLUV4cGVjdGVkIjogIlBBU1MifSwKKyAgICAg
ICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHJl
cXVlc3QgaW50ZXJjZXB0aW9uIHdpdGggcmVzcG9uc2UuPC9wPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9vdmVycmlkZS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9pbnRl
cmNlcHQtZWNoby5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9pbnRlcmNlcHQtZWNoby5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhYjUwYTU3YTQ0ZGE4
YmM2ZjExOGViNWZkZWJiZTcxMmFmNGUxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1lY2hvLnBo
cApAQCAtMCwwICsxLDE4IEBACit7CisgICAgInVyaSI6ICI8P3BocCBlY2hvICRfU0VSVkVSWydS
RVFVRVNUX1VSSSddID8+IiwKKyAgICAibWV0aG9kIjogIjw/cGhwIGVjaG8gJF9TRVJWRVJbJ1JF
UVVFU1RfTUVUSE9EJ107ID8+IiwKKyAgICAiaGVhZGVycyI6IHsKKzw/cGhwIGZvcmVhY2ggKGdl
dGFsbGhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWUpIHsgPz4KKyAgICAgICAgIjw/cGhwIGVj
aG8gJG5hbWU7ID8+IjogIjw/cGhwIGVjaG8gJHZhbHVlOyA/PiIsCis8P3BocCB9ID8+IH0sCisg
ICAgImdldCI6IHsKKzw/cGhwIGZvcmVhY2ggKCRfR0VUIGFzICRuYW1lID0+ICR2YWx1ZSkgeyA/
PgorICAgICAgICAiPD9waHAgZWNobyAkbmFtZTsgPz4iOiAiPD9waHAgZWNobyAkdmFsdWU7ID8+
IiwKKzw/cGhwIH0gPz4KKyAgICB9LAorICAgICJwb3N0IjogeworPD9waHAgZm9yZWFjaCAoJF9Q
T1NUIGFzICRuYW1lID0+ICR2YWx1ZSkgeyA/PgorICAgICAgICAiPD9waHAgZWNobyAkbmFtZTsg
Pz4iOiAiPD9waHAgZWNobyAkdmFsdWU7ID8+IiwKKzw/cGhwIH0gPz4KKyAgICB9LAorfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92
ZXJyaWRlbi1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyMjE2N2VkYjBiYmUzZmIwNzJjNDcxZWM4
MjM3NDk1M2E1ZDJhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0LW92ZXJyaWRlbi1w
YWdlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD48L2hlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcyI+CisgICAgPC9zY3JpcHQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPk92ZXJyaWRkZW4g
cGFnZSBjb250ZW50PC9wPgorICAgICAgICA8c2NyaXB0PmFsZXJ0KCJSRVBMQUNFRCBIVE1MIENP
TlRFTlQiKTsgVGVzdFBhZ2UuY29tcGxldGVUZXN0KCk7PC9zY3JpcHQ+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvaW50ZXJjZXB0LXJlcXVlc3Qtb3ZlcnJpZGVuLXNjcmlwdC5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2Vw
dC1yZXF1ZXN0LW92ZXJyaWRlbi1zY3JpcHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc4ZWM0ZTI2MTE1N2Qz
MzA5MTljMTMyODk5OTU1Nzc5ODkzN2VhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ludGVyY2VwdC1yZXF1ZXN0
LW92ZXJyaWRlbi1zY3JpcHQuanMKQEAgLTAsMCArMSwyIEBACithbGVydCgiT1ZFUlJJREVOIG92
ZXJyaWRlLmpzIFRFWFQiKTsKK1Rlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJPdmVy
cmlkZUNvbnRlbnREaWRMb2FkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCmluZGV4IGEwMjY0OWQ1
NmJkYjNkMjg1YzFmMGQ3ZjgwMGNmZTQxMDg5MjI2NDEuLjgzMWE2MWY2Nzg1ZTQ0ODhiMTJkN2Rm
ZGVmMWZlNjZkMzc1NTEyMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzCkBAIC04NywxMiArODcs
MTQgQEAgVGVzdFBhZ2UucnVuVGVzdCA9IHdpbmRvdy5ydW5UZXN0ID0gZnVuY3Rpb24oKQogICAg
IGlmICh0eXBlb2YgdGVzdEZ1bmN0aW9uICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgIGFsZXJ0
KCJGYWlsZWQgdG8gc2VuZCB0ZXN0KCkgYmVjYXVzZSBpdCBpcyBub3QgYSBmdW5jdGlvbi4iKTsK
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBsZXQgdXJsID0gdGVzdFJ1bm5lci5pbnNwZWN0b3JUZXN0U3R1YlVSTDsKICAgICBp
ZiAoIXVybCkgewogICAgICAgICBhbGVydCgiRmFpbGVkIHRvIG9idGFpbiBpbnNwZWN0b3IgdGVz
dCBzdHViIFVSTC4iKTsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJ
bkZyb250ZW5kKGluaXRpYWxpemVycykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJjZS1vdmVycmlkZS1j
b250aW51ZS1yZXNwb25zZS5odG1sCmluZGV4IDQ0ODA2NDIwMDQ0NzY5N2ZiMDdmNDE2ZTk3ODYz
OThlMDAzZDI0NjAuLmQ2NmUxNDBlYjcxNzg2NDdjMzg4NjI5YjBkMTNlMWFhMDFhMDMwYzkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2xvY2FsLXJlc291cmNlLW92
ZXJyaWRlLWNvbnRpbnVlLXJlc3BvbnNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtY29udGludWUtcmVzcG9uc2UuaHRtbApA
QCAtNDYsNyArNDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIC8vIExldCB0aGUg
bG9hZCBjb250aW51ZS4KICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdEV2ZW50KHtldmVudDogIk5ldHdvcmsucmVz
cG9uc2VSZWNlaXZlZCJ9KSwKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2Fp
dENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHty
ZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1zLnJlcXVlc3RJZH19KSwKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JQcm90b2NvbC5hd2FpdENvbW1hbmQoe21ldGhvZDogIk5ldHdvcmsuaW50
ZXJjZXB0Q29udGludWUiLCBwYXJhbXM6IHtyZXF1ZXN0SWQ6IG1lc3NhZ2VPYmplY3QucGFyYW1z
LnJlcXVlc3RJZCwgc3RhZ2U6ICJyZXNwb25zZSJ9fSksCiAgICAgICAgICAgICBdKTsKICAgICAg
ICAgICAgIFByb3RvY29sVGVzdC5wYXNzKCJSZXNwb25zZSByZWNlaXZlZC4iKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEtaW50ZXJj
ZXB0ZWQuanNvbiBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRh
LWludGVyY2VwdGVkLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0ZTJiMGQ5OTY3Y2ViMWVkN2UzMmNkMTky
OTM1ZGYxNzY1ODEyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9kYXRhLWludGVyY2VwdGVkLmpzb24KQEAgLTAsMCArMSBAQAoraW50
ZXJjZXB0ZWQgcmVxdWVzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzOTM1ZmViNzQ0ZDQ3
Y2Y2MWZkM2MxZjMzODkyYmJlN2YyYWU5Yjk2Li42ZGQ0ZmMwMmI1NTY3MzRhZGU1NzJkNmZjZmFl
NTcyM2I1NjlmMDJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zCkBAIC01NzQsNiArNTc0LDE4IEBAIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbG9jYWwtcmVzb3VyY2Utb3ZlcnJpZGUtc2NyaXB0LXRhZy5odG1sIFsgRmFpbHVyZSBdCiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNlLWluc3BlY3Rvci1v
dmVycmlkZS5odG1sIFsgRmFpbHVyZSBdCiBpbnNwZWN0b3IvbmV0d29yay9sb2NhbC1yZXNvdXJj
ZS1vdmVycmlkZS1jb250aW51ZS1yZXNwb25zZS5odG1sIFsgU2tpcCBdCiAKKyMgUmVxdWVzdCBp
bnRlcmNlcHRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBXZWJLaXQxCitodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ludGVyY2VwdC1hYm9ydGVkLXJlcXVlc3QuaHRtbCBbIFNraXAgXQoraHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1jb250aW51ZS5odG1s
IFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0
LWZyYWdtZW50Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50
ZXJjZXB0LXJlcXVlc3QtbWFpbi1yZXNvdXJjZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LW1haW4tcmVzb3VyY2Utd2l0aC1yZXNw
b25zZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2Vw
dC1yZXF1ZXN0LXByb3BlcnRpZXMuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9pbnRlcmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS5odG1sIFsgU2tpcCBdCitodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ludGVyY2VwdC1yZXF1ZXN0LXN1YnJlc291cmNlLXdp
dGgtZXJyb3IuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9pbnRl
cmNlcHQtcmVxdWVzdC1zdWJyZXNvdXJjZS13aXRoLXJlc3BvbnNlLmh0bWwgWyBTa2lwIF0KK2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaW50ZXJjZXB0LXJlcXVlc3Qtd2l0aC1yZXNwb25z
ZS5odG1sIFsgU2tpcCBdCisKIHdlYmtpdC5vcmcvYi8xNjQ5MzMgaHR0cC90ZXN0cy9taXNjL2xp
bmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8x
NjU1NDEgY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtb3ZlcmxhcC1leHRlbnQtcnRs
Lmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>