<?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>202372</bug_id>
          
          <creation_ts>2019-09-30 14:23:56 -0700</creation_ts>
          <short_desc>Updated resource load statistics are never merged into the SQLite Database backend</short_desc>
          <delta_ts>2019-10-02 12:22:04 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1575326</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-09-30 14:23:56 -0700</bug_when>
    <thetext>Updated resource load statistics are never merged into the SQLite Database backend.
&lt;rdar://problem/55854542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575355</commentid>
    <comment_count>1</comment_count>
      <attachid>379850</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-09-30 16:00:43 -0700</bug_when>
    <thetext>Created attachment 379850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575393</commentid>
    <comment_count>2</comment_count>
      <attachid>379866</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-09-30 17:43:05 -0700</bug_when>
    <thetext>Created attachment 379866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575403</commentid>
    <comment_count>3</comment_count>
      <attachid>379866</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-09-30 18:07:18 -0700</bug_when>
    <thetext>Comment on attachment 379866
Patch

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

Does anything need to be cleared up between tests as part of resetToConsistentState()?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:360
&gt; +        RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;ResourceLoadStatisticsDatabaseStore::insertObservedDomain can only be called on domains not in the database&quot;);

Missing period.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:547
&gt; +    return other.lastSeen &lt;= mostRecentUserInteractionTime + 24_h;

Where do these 24 hours come from? I don&apos;t understand their meaning here. Is something missing in the function name to explain the 24 hours?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:562
&gt; +    unsigned currentTimesAccessedDueToFirstPartyInteraction = current.getColumnInt(9);

I&apos;m wondering if these integers could be constants so that we don&apos;t mess it up down the road, changing them in one place but forgetting about another.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:597
&gt; +        RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p - ResourceLoadStatisticsDatabaseStore::mergeStatistic. Statement failed to bind or domain was not found, error message: %{public}s&quot;, this, m_database.lastErrorMsg());

What will go into this error message? Since we&apos;re making it public, we need to make sure nothing sensitive can end up there.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:617
&gt; +    // can refer to the ObservedDomain table entries

Missing period.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1303
&gt; +        || m_updateGrandfatheredStatement.bindText(2, domain.string()) != SQLITE_OK

Could this 2 be made a constant?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1776
&gt; +        || m_updateTimesAccessedDueToFirstPartyInteractionStatement.bindText(2, domain.string()) != SQLITE_OK

This is the same 2 used here, right?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1778
&gt; +        RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p - ResourceLoadStatisticsDatabaseStore::updateTimesAccessedAsFirstPartyDueToUserInteraction failed to bind, error message: %{public}s&quot;, this, m_database.lastErrorMsg());

Again, we need to make sure nothing sensitive can go in the public log.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1792
&gt; +        || m_updateDataRecordsRemovedStatement.bindText(2, domain.string()) != SQLITE_OK

Same 2 again?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1794
&gt; +        RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p - ResourceLoadStatisticsDatabaseStore::updateDataRecordsRemoved failed to bind, error message: %{public}s&quot;, this, m_database.lastErrorMsg());

Public error message.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:267
&gt; +        if (!m_statisticsStore)

Why is the !is&lt;ResourceLoadStatisticsMemoryStore&gt;(*m_statisticsStore) check no longer needed?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:245
&gt; +    void mergeStatisticForTesting(PAL::SessionID, const RegistrableDomain&amp;, const TopFrameDomain&amp;, Seconds, bool, Seconds, bool isGrandfathered, bool, bool, unsigned, CompletionHandler&lt;void()&gt;&amp;&amp;);

Three of the bool parameters don&apos;t have names. I think they should since the header declares the interface. Same thing for the two Seconds and the unsigned.

Or could we use a named struct here?

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:116
&gt; +    void mergeStatisticForTesting(PAL::SessionID, const RegistrableDomain&amp;, const TopFrameDomain&amp;, Seconds, bool, Seconds, bool, bool, bool, unsigned, CompletionHandler&lt;void()&gt;&amp;&amp;);

The bools and Seconds parameters, and the unsigned parameter should be named.

Or could we use a named struct here?

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:165
&gt; +    void mergeStatisticForTesting(const URL&amp;, const URL&amp; topFrameUrl, Seconds, bool, Seconds, bool, bool, bool, unsigned, CompletionHandler&lt;void()&gt;&amp;&amp;);

The bools and Seconds parameters, and the unsigned parameter should be named.

Or could we use a named struct here?

&gt; LayoutTests/http/tests/resourceLoadStatistics/merge-statistic-does-not-overwrite-database-expected.txt:1
&gt; +PASS successfullyParsed is true

Could we get one or more non-default PASS statements in here to explain what passed?

&gt; LayoutTests/http/tests/resourceLoadStatistics/merge-statistic-does-overwrite-database-expected.txt:1
&gt; +PASS successfullyParsed is true

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575542</commentid>
    <comment_count>4</comment_count>
      <attachid>379866</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-01 08:39:14 -0700</bug_when>
    <thetext>Comment on attachment 379866
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:432
&gt;  bool ResourceLoadStatisticsDatabaseStore::confirmDomainDoesNotExist(const RegistrableDomain&amp; domain) const

This method is badly named. Since it returns a boolean. I&apos;d suggest domainExists() (reversing the meaning for clarity since a method name)

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:540
&gt; +static bool wasAccessedAsFirstPartyDueToUserInteraction(bool currentHadUserInteraction, double currentMostRecentUserInteraction, ResourceLoadStatistics&amp; other)

other should be const.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:550
&gt; +void ResourceLoadStatisticsDatabaseStore::merge(WebCore::SQLiteStatement&amp; current, ResourceLoadStatistics&amp; other)

other should be const. current should be too if possible.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:57
&gt; +    void mergeStatistics(Vector&lt;ResourceLoadStatistics&gt;&amp;&amp;) override;

Could this be final?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:64
&gt; +    void mergeStatistics(Vector&lt;ResourceLoadStatistics&gt;&amp;&amp;) override;

Could this be final?

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:267
&gt;&gt; +        if (!m_statisticsStore)
&gt; 
&gt; Why is the !is&lt;ResourceLoadStatisticsMemoryStore&gt;(*m_statisticsStore) check no longer needed?

This is correct, mergeStatistics() is now a pure virtual function on the interface so we don&apos;t care which subclass it is.
Looks good to me.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:585
&gt; +void WebResourceLoadStatisticsStore::mergeStatisticForTesting(const RegistrableDomain&amp; domain, const RegistrableDomain&amp; topFrameDomain, Seconds lastSeen, bool hadUserInteraction, Seconds mostRecentUserInteraction, bool isGrandfathered, bool isPrevalent, bool isVeryPrevalent, unsigned dataRecordsRemoved, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)

Using Seconds for lastSeen / mostRecentUserInteraction is confusing. More likely they should be WallTime.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:591
&gt; +            auto statistic = ResourceLoadStatistics(domain);

I think this would read better:
ResourceLoadStatistics statistic(domain);

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:606
&gt; +            Vector&lt;ResourceLoadStatistics&gt; statistics;

Would this build?
Vector&lt;ResourceLoadStatistics&gt; statistics({ WTFMove(statistic) });

Leveraging this constructor:
Vector(std::initializer_list&lt;T&gt; initializerList);

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:608
&gt; +            m_statisticsStore-&gt;mergeStatistics(WTFMove(statistics));

Or maybe even:
m_statisticsStore-&gt;mergeStatistics(Vector&lt;ResourceLoadStatistics&gt;({ WTFMove(statistic) }));

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:540
&gt; +    if (!canSendMessage()) {

Not needed, sendWithAsyncReply() will do the right thing for you.

&gt; LayoutTests/http/tests/resourceLoadStatistics/merge-statistic-does-not-overwrite-database.html:11
&gt; +    if (testRunner)

Please add a call to description(&quot;Tests that merged statistic does not overwrite old statistic&quot;); since you&apos;re using js-test. The output will look much better.

&gt; LayoutTests/http/tests/resourceLoadStatistics/merge-statistic-does-not-overwrite-database.html:12
&gt; +        testRunner.waitUntilDone();

Since you&apos;re using js-test, you can simply use jsTestIsAsync = true;

&gt; LayoutTests/http/tests/resourceLoadStatistics/merge-statistic-does-not-overwrite-database.html:33
&gt; +          testRunner.notifyDone();

You&apos;re supposed to call finishJSTest() when using js-test.

&gt; LayoutTests/http/tests/resourceLoadStatistics/merge-statistic-does-not-overwrite-database.html:63
&gt; +            testRunner.notifyDone();

finishJSTest();

&gt; LayoutTests/http/tests/resourceLoadStatistics/merge-statistic-does-overwrite-database.html:11
&gt; +    if (testRunner)

Same comments as for the other test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575559</commentid>
    <comment_count>5</comment_count>
      <attachid>379866</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-01 09:12:41 -0700</bug_when>
    <thetext>Comment on attachment 379866
Patch

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

This is really close, but needs a bit of work before it&apos;s ready to land. I&apos;m glad to see all the tests pass!

Please change the %{public} to %{private} in the log statements

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:487
&gt; +    for (auto&amp; topFrameDomain : loadStatistics.storageAccessUnderTopFrameDomains) {

We should probably get rid of these loops of SQLite queries and replace with a single query that does all of the updates at once. To do so, you&apos;ll need to revise the insert statements to ignore instances where the rows in the table already exist.

Note: Let&apos;s do this improvement under a separate bug!

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:489
&gt; +            insertDomainRelationship(m_storageAccessUnderTopFrameDomainsStatement, registrableDomainID.value(), topFrameDomain);

Does attempting to insert an already-existing relationship cause an error? On other SQL systems it used to be possible to indicate that you don&apos;t care if something fails (because it already exists). That would remove the need to pay the cost of this check when inserting.

This would involve changing the existing INSERT statements into &quot;INSERT OR IGNORE&quot;, which should be less closely than running a Query to see if a relationship exists, then a second query to insert (if it doesn&apos;t exist).

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:547
&gt;&gt; +    return other.lastSeen &lt;= mostRecentUserInteractionTime + 24_h;
&gt; 
&gt; Where do these 24 hours come from? I don&apos;t understand their meaning here. Is something missing in the function name to explain the 24 hours?

This looks like some hold-over from the 24-hour window for user interaction (which is no longer a thing). Kate: Check what this code does in the in-memory store. We should match that behavior.

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:562
&gt;&gt; +    unsigned currentTimesAccessedDueToFirstPartyInteraction = current.getColumnInt(9);
&gt; 
&gt; I&apos;m wondering if these integers could be constants so that we don&apos;t mess it up down the road, changing them in one place but forgetting about another.

I&apos;m not sure how easy this would be, since it&apos;s controlled by the form of the SQL statement and the columns in the database. Maybe you could define them at the same point as the &apos;constexpr auto createObservedDomain = &quot;CREATE TABLE...&apos; declarations, which would at least help keep them in sync. Ditto for the parameters to the queries.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:571
&gt; +        // Else, do nothing.

I don&apos;t think the Else comment is useful here.

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:597
&gt;&gt; +        RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p - ResourceLoadStatisticsDatabaseStore::mergeStatistic. Statement failed to bind or domain was not found, error message: %{public}s&quot;, this, m_database.lastErrorMsg());
&gt; 
&gt; What will go into this error message? Since we&apos;re making it public, we need to make sure nothing sensitive can end up there.

We should switch all of these &quot;%{public}&quot; log entries that relate to registrable domain strings to &quot;%{private}&quot; so they don&apos;t go into the permanent log. The ID&apos;s are fine, since they are machine-specific and don&apos;t reveal anything useful (unless you obtain the ITP database from the machine generating the log).

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1303
&gt;&gt; +        || m_updateGrandfatheredStatement.bindText(2, domain.string()) != SQLITE_OK
&gt; 
&gt; Could this 2 be made a constant?

Whoops! I&apos;m surprised we didn&apos;t see errors from binding text to the integer valued parameter. I guess we don&apos;t hit this code often.

John: I don&apos;t think creating labels for these is super-useful. These are the arguments in the Query (parameter 1, 2, etc.) Our general practice hasn&apos;t been to create labels for these in our other database code, since each SQL statement would then expand into a declaration for the statement, plus a declaration for each parameter.

Kate: Maybe check with Brady to see if we have a SQL statement class that might wrap all of this stuff up in some package that would help us maintain integrity between statements and arguments. Might be a good idea for a future refinement.

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1792
&gt;&gt; +        || m_updateDataRecordsRemovedStatement.bindText(2, domain.string()) != SQLITE_OK
&gt; 
&gt; Same 2 again?

John: It&apos;s the second parameter of the SQL statement. Which is likely not the same for &apos;m_updateDataRecordsRemovedStatement&apos; as it was for &apos;m_updateTimesAccessedDueToFirstPartyInteraction&apos;

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:267
&gt;&gt; +        if (!m_statisticsStore)
&gt; 
&gt; Why is the !is&lt;ResourceLoadStatisticsMemoryStore&gt;(*m_statisticsStore) check no longer needed?

That is the point of this entire patch -- to get the updates into the database! :-)

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:245
&gt;&gt; +    void mergeStatisticForTesting(PAL::SessionID, const RegistrableDomain&amp;, const TopFrameDomain&amp;, Seconds, bool, Seconds, bool isGrandfathered, bool, bool, unsigned, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; Three of the bool parameters don&apos;t have names. I think they should since the header declares the interface. Same thing for the two Seconds and the unsigned.
&gt; 
&gt; Or could we use a named struct here?

Agree with both of these points.

&gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:116
&gt;&gt; +    void mergeStatisticForTesting(PAL::SessionID, const RegistrableDomain&amp;, const TopFrameDomain&amp;, Seconds, bool, Seconds, bool, bool, bool, unsigned, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; The bools and Seconds parameters, and the unsigned parameter should be named.
&gt; 
&gt; Or could we use a named struct here?

+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575562</commentid>
    <comment_count>6</comment_count>
      <attachid>379866</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-01 09:16:30 -0700</bug_when>
    <thetext>Comment on attachment 379866
Patch

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1303
&gt;&gt;&gt; +        || m_updateGrandfatheredStatement.bindText(2, domain.string()) != SQLITE_OK
&gt;&gt; 
&gt;&gt; Could this 2 be made a constant?
&gt; 
&gt; Whoops! I&apos;m surprised we didn&apos;t see errors from binding text to the integer valued parameter. I guess we don&apos;t hit this code often.
&gt; 
&gt; John: I don&apos;t think creating labels for these is super-useful. These are the arguments in the Query (parameter 1, 2, etc.) Our general practice hasn&apos;t been to create labels for these in our other database code, since each SQL statement would then expand into a declaration for the statement, plus a declaration for each parameter.
&gt; 
&gt; Kate: Maybe check with Brady to see if we have a SQL statement class that might wrap all of this stuff up in some package that would help us maintain integrity between statements and arguments. Might be a good idea for a future refinement.

We do have &apos;WebCore/platform/sql/SQLiteStatement.h&quot;, but it doesn&apos;t seem like it offers much in the way of type checking or parameter/query matching.

It&apos;s probably a good idea (for future) to create a SQLiteStatement-derived class template that lets you define the statement and parameters, and ensures you always bind the right type to the right argument when writing the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575564</commentid>
    <comment_count>7</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-10-01 09:25:37 -0700</bug_when>
    <thetext>&gt; Comment on attachment 379866 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379866&amp;action=review

Thanks for all the feedback everyone!


Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:547
&gt; &gt;&gt; +    return other.lastSeen &lt;= mostRecentUserInteractionTime + 24_h;
&gt; &gt; 
&gt; &gt; Where do these 24 hours come from? I don&apos;t understand their meaning here. Is something missing in the function name to explain the 24 hours?
&gt; 
&gt; This looks like some hold-over from the 24-hour window for user interaction
&gt; (which is no longer a thing). Kate: Check what this code does in the
&gt; in-memory store. We should match that behavior.
&gt; 

I copied this functionality from the following function in the ResourceLoadStatisticsMemoryStore: 

bool ResourceLoadStatisticsMemoryStore::wasAccessedAsFirstPartyDueToUserInteraction(const ResourceLoadStatistics&amp; current, const ResourceLoadStatistics&amp; updated) const
{
    if (!current.hadUserInteraction &amp;&amp; !updated.hadUserInteraction)
        return false;

    auto mostRecentUserInteractionTime = std::max(current.mostRecentUserInteractionTime, updated.mostRecentUserInteractionTime);

    return updated.lastSeen &lt;= mostRecentUserInteractionTime + 24_h;
}


From my understanding, this was checking if the &quot;last seen&quot; time happened within the last 24hrs since the user interaction. If so, the resource was accessed as a first party. John, let me know if this seems incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575569</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-01 09:30:10 -0700</bug_when>
    <thetext>(In reply to Katherine_cheney from comment #7)
&gt; I copied this functionality from the following function in the
&gt; ResourceLoadStatisticsMemoryStore: 
... 
&gt;     return updated.lastSeen &lt;= mostRecentUserInteractionTime + 24_h;
&gt; }
&gt; 
&gt; 
&gt; From my understanding, this was checking if the &quot;last seen&quot; time happened
&gt; within the last 24hrs since the user interaction. If so, the resource was
&gt; accessed as a first party. John, let me know if this seems incorrect.

I think this is old stuff related to the original 24-hour rule. We can probably get rid of it (in both places) now that we block immediately, rather than granting a 24-hour exemption for first parties.

This was part of some telemetry to see how frequently this was being encountered, but I don&apos;t think we need that telemetry anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575576</commentid>
    <comment_count>9</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-10-01 09:39:27 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #8)
&gt; (In reply to Katherine_cheney from comment #7)
&gt; &gt; I copied this functionality from the following function in the
&gt; &gt; ResourceLoadStatisticsMemoryStore: 
&gt; ... 
&gt; &gt;     return updated.lastSeen &lt;= mostRecentUserInteractionTime + 24_h;
&gt; &gt; }
&gt; &gt; 
&gt; &gt; 
&gt; &gt; From my understanding, this was checking if the &quot;last seen&quot; time happened
&gt; &gt; within the last 24hrs since the user interaction. If so, the resource was
&gt; &gt; accessed as a first party. John, let me know if this seems incorrect.
&gt; 
&gt; I think this is old stuff related to the original 24-hour rule. We can
&gt; probably get rid of it (in both places) now that we block immediately,
&gt; rather than granting a 24-hour exemption for first parties.
&gt; 
&gt; This was part of some telemetry to see how frequently this was being
&gt; encountered, but I don&apos;t think we need that telemetry anymore.

Okay, so to clarify, the timesAccessedAsFirstPartyDueToUserInteraction data is no longer relevant, and does not need to be updated in mergeStatistic?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575602</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-01 11:03:57 -0700</bug_when>
    <thetext>(In reply to Katherine_cheney from comment #7)
&gt; &gt; Comment on attachment 379866 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=379866&amp;action=review
&gt; 
&gt; Thanks for all the feedback everyone!
&gt; 
&gt; 
&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.
&gt; cpp:547
&gt; &gt; &gt;&gt; +    return other.lastSeen &lt;= mostRecentUserInteractionTime + 24_h;
&gt; &gt; &gt; 
&gt; &gt; &gt; Where do these 24 hours come from? I don&apos;t understand their meaning here. Is something missing in the function name to explain the 24 hours?
&gt; &gt; 
&gt; &gt; This looks like some hold-over from the 24-hour window for user interaction
&gt; &gt; (which is no longer a thing). Kate: Check what this code does in the
&gt; &gt; in-memory store. We should match that behavior.
&gt; &gt; 
&gt; 
&gt; I copied this functionality from the following function in the
&gt; ResourceLoadStatisticsMemoryStore: 
&gt; 
&gt; bool
&gt; ResourceLoadStatisticsMemoryStore::
&gt; wasAccessedAsFirstPartyDueToUserInteraction(const ResourceLoadStatistics&amp;
&gt; current, const ResourceLoadStatistics&amp; updated) const
&gt; {
&gt;     if (!current.hadUserInteraction &amp;&amp; !updated.hadUserInteraction)
&gt;         return false;
&gt; 
&gt;     auto mostRecentUserInteractionTime =
&gt; std::max(current.mostRecentUserInteractionTime,
&gt; updated.mostRecentUserInteractionTime);
&gt; 
&gt;     return updated.lastSeen &lt;= mostRecentUserInteractionTime + 24_h;
&gt; }
&gt; 
&gt; 
&gt; From my understanding, this was checking if the &quot;last seen&quot; time happened
&gt; within the last 24hrs since the user interaction. If so, the resource was
&gt; accessed as a first party. John, let me know if this seems incorrect.

I believe Brent implemented wasAccessedAsFirstPartyDueToUserInteraction() which is why I don&apos;t recognize this logic. I think it&apos;s fine as-is if it matches what we have in the memory store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575661</commentid>
    <comment_count>11</comment_count>
      <attachid>379932</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-10-01 12:48:52 -0700</bug_when>
    <thetext>Created attachment 379932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575668</commentid>
    <comment_count>12</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-10-01 12:52:54 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #10)
&gt; (In reply to Katherine_cheney from comment #7)
&gt; &gt; &gt; Comment on attachment 379866 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=379866&amp;action=review
&gt; &gt; 
&gt; &gt; Thanks for all the feedback everyone!
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.
&gt; &gt; cpp:547
&gt; &gt; &gt; &gt;&gt; +    return other.lastSeen &lt;= mostRecentUserInteractionTime + 24_h;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Where do these 24 hours come from? I don&apos;t understand their meaning here. Is something missing in the function name to explain the 24 hours?
&gt; &gt; &gt; 
&gt; &gt; &gt; This looks like some hold-over from the 24-hour window for user interaction
&gt; &gt; &gt; (which is no longer a thing). Kate: Check what this code does in the
&gt; &gt; &gt; in-memory store. We should match that behavior.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I copied this functionality from the following function in the
&gt; &gt; ResourceLoadStatisticsMemoryStore: 
&gt; &gt; 
&gt; &gt; bool
&gt; &gt; ResourceLoadStatisticsMemoryStore::
&gt; &gt; wasAccessedAsFirstPartyDueToUserInteraction(const ResourceLoadStatistics&amp;
&gt; &gt; current, const ResourceLoadStatistics&amp; updated) const
&gt; &gt; {
&gt; &gt;     if (!current.hadUserInteraction &amp;&amp; !updated.hadUserInteraction)
&gt; &gt;         return false;
&gt; &gt; 
&gt; &gt;     auto mostRecentUserInteractionTime =
&gt; &gt; std::max(current.mostRecentUserInteractionTime,
&gt; &gt; updated.mostRecentUserInteractionTime);
&gt; &gt; 
&gt; &gt;     return updated.lastSeen &lt;= mostRecentUserInteractionTime + 24_h;
&gt; &gt; }
&gt; &gt; 
&gt; &gt; 
&gt; &gt; From my understanding, this was checking if the &quot;last seen&quot; time happened
&gt; &gt; within the last 24hrs since the user interaction. If so, the resource was
&gt; &gt; accessed as a first party. John, let me know if this seems incorrect.
&gt; 
&gt; I believe Brent implemented wasAccessedAsFirstPartyDueToUserInteraction()
&gt; which is why I don&apos;t recognize this logic. I think it&apos;s fine as-is if it
&gt; matches what we have in the memory store.

I interpreted Brent&apos;s last comment to mean that I should remove the updating of wasAccessedAsFirstPartyDueToUserInteraction in both the memory and database store, so I took them out in this patch. But I can add the checks back in if they are still applicable to ITP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575697</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-01 13:25:28 -0700</bug_when>
    <thetext>(In reply to Katherine_cheney from comment #12)

&gt; I interpreted Brent&apos;s last comment to mean that I should remove the updating
&gt; of wasAccessedAsFirstPartyDueToUserInteraction in both the memory and
&gt; database store, so I took them out in this patch. But I can add the checks
&gt; back in if they are still applicable to ITP.

Correct. This is old junk we should get rid of (in both places).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575824</commentid>
    <comment_count>14</comment_count>
      <attachid>379975</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-10-01 17:46:59 -0700</bug_when>
    <thetext>Created attachment 379975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575825</commentid>
    <comment_count>15</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-10-01 17:53:05 -0700</bug_when>
    <thetext>found a bug in WKWebsiteDataStoreRef, and wrote another test to be safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576039</commentid>
    <comment_count>16</comment_count>
      <attachid>379975</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-02 10:16:58 -0700</bug_when>
    <thetext>Comment on attachment 379975
Patch

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

Looks good. Please flip the public/private on that handful of statements and I think we&apos;re good here.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:220
&gt; +        RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::open failed, error message: %{private}s, database path: %{private}s&quot;, this, m_database.lastErrorMsg(), m_storageDirectoryPath.utf8().data());

This can be %public. The location of the database file is not private information.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:230
&gt; +            RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::createSchema failed, error message: %{private}s, database path: %{private}s&quot;, this, m_database.lastErrorMsg(), m_storageDirectoryPath.utf8().data());

This can be %public. This just creates empty tables, and error messages about that is not private information.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:240
&gt; +        RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::prepareStatements failed, error message: %{private}s, database path: %{private}s&quot;, this, m_database.lastErrorMsg(), m_storageDirectoryPath.utf8().data());

This can be %public. This just prepares parameterized SQL statements, which does not contain private information.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:358
&gt; +        RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::prepareStatements failed to prepare, error message: %{private}s&quot;, this, m_database.lastErrorMsg());

The prepare-statement error messages can go in %public. There is not private information in this query (just creating empty tables and preparing SQL calls).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576041</commentid>
    <comment_count>17</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-10-02 10:21:22 -0700</bug_when>
    <thetext>Thanks Brent! I am mildly concerned about the failing mac-debug-wk1 tests because of what happened on the testing patch, I&apos;m looking into it now to make sure they are unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576044</commentid>
    <comment_count>18</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-02 10:22:57 -0700</bug_when>
    <thetext>(In reply to Katherine_cheney from comment #17)
&gt; Thanks Brent! I am mildly concerned about the failing mac-debug-wk1 tests
&gt; because of what happened on the testing patch, I&apos;m looking into it now to
&gt; make sure they are unrelated.

I looked at them, and don&apos;t think they are related:

1. Other patches I have reviewed today show that Mac-debug-wk1 failure, too. Not just your patch.
2. The crash signature is in JSC::JSLock::DropAllLocks::~DropAllLock, and seems to be related to some JIT change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576054</commentid>
    <comment_count>19</comment_count>
      <attachid>380034</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-10-02 10:46:36 -0700</bug_when>
    <thetext>Created attachment 380034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576075</commentid>
    <comment_count>20</comment_count>
      <attachid>380034</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-02 11:23:03 -0700</bug_when>
    <thetext>Comment on attachment 380034
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:237
&gt; +        RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::turnOnIncrementalAutoVacuum failed, error message: %{private}s&quot;, this, m_database.lastErrorMsg());

Is this the right patch? It looks like this is still private (I suggested public in my review).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576077</commentid>
    <comment_count>21</comment_count>
      <attachid>380041</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-10-02 11:27:13 -0700</bug_when>
    <thetext>Created attachment 380041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576078</commentid>
    <comment_count>22</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-10-02 11:27:36 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #20)
&gt; Comment on attachment 380034 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380034&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:237
&gt; &gt; +        RELEASE_LOG_ERROR(Network, &quot;%p - ResourceLoadStatisticsDatabaseStore::turnOnIncrementalAutoVacuum failed, error message: %{private}s&quot;, this, m_database.lastErrorMsg());
&gt; 
&gt; Is this the right patch? It looks like this is still private (I suggested
&gt; public in my review).

Sorry, missed that one. Should be ok now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576104</commentid>
    <comment_count>23</comment_count>
      <attachid>380041</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-02 12:22:02 -0700</bug_when>
    <thetext>Comment on attachment 380041
Patch

Clearing flags on attachment: 380041

Committed r250621: &lt;https://trac.webkit.org/changeset/250621&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576105</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-02 12:22:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379850</attachid>
            <date>2019-09-30 16:00:43 -0700</date>
            <delta_ts>2019-09-30 16:11:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202372-20190930160042.patch</filename>
            <type>text/plain</type>
            <size>67612</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNDM3M2FhOTljZWRiMzY0
ZjZjMGNjNTVjYzQ1YmUyNGRjM2U0N2EuLjVmNzJkOGM5NmQ2ODE1NTA0NTFkYTM2ZjYzZjU4ZTRi
YTExZjYxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMTktMDktMzAgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlZCByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MgYXJlIG5ldmVyIG1lcmdlZCBpbnRvIHRoZSBTUUxpdGUgRGF0
YWJhc2UgYmFja2VuZCAoMjAyMzcyKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU4NTQ1NDI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBoYXMgYSBsb3Qgb2YgY2hhbmdlcyB0byB0aGUgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBi
ZSBhYmxlIAorICAgICAgICB0byB0ZXN0IHRoZSBtZXJnZVN0YXRpc3RpY3MgZnVuY3Rpb24uIE1l
cmdpbmcgZnVuY3Rpb25hbGl0eSBtaW1pY3MKKyAgICAgICAgdGhhdCBvZiB0aGUgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlIGFuZCB0aGUgbWVyZ2UoKSBmdW5jdGlvbiBpbgorICAg
ICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUpOgorICAgICAgICBBZGRlZCBuZXcgU1FM
aXRlIHF1ZXJpZXMgdGhhdCBhcmUgbmVlZGVkIHRvIG1lcmdlIG5ldyBzdGF0aXN0aWNzLgorCisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVw
YXJlU3RhdGVtZW50cyk6CisgICAgICAgIEFkZGVkIG5ldyBwcmVwYXJlIHN0YXRlbWVudHMgZm9y
IG5ldyBTUUxpdGUgcXVlcmllcy4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyk6CisgICAgICAg
IEluIG9yZGVyIHRvIHJldXNlIHRoaXMgY29kZSBmb3IgdGhlIG1lcmdlIHN0YXRpc3RpY3MgZnVu
Y3Rpb24sIEkgYWRkZWQKKyAgICAgICAgYSBjaGVjayBiZWZvcmUgZWFjaCBpbnNlcnQgY2FsbCB0
byBlbnN1cmUgdGhlIHJlbGF0aW9uc2hpcCBkb2VzIG5vdAorICAgICAgICBhbHJlYWR5IGV4aXN0
IGluIHRoZSBkYXRhYmFzZS4gVGhpcyB3YXMgbm90IG5lZWRlZCBiZWZvcmUgYmVjYXVzZSBpdAor
ICAgICAgICB3YXMgb25seSBjYWxsZWQgb24gYW4gZW1wdHkgZGF0YWJhc2UuCisKKyAgICAgICAg
KFdlYktpdDo6d2FzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbik6Cisg
ICAgICAgIFRoaXMgZnVuY3Rpb24gbWltaWNzIHRoZSBvbmUgaW4gdGhlIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZQorICAgICAgICB0byBkZXRlcm1pbmUgd2hldGhlciB0byBpbmNy
ZW1lbnQgdGhpcyBmaWVsZCBpbiB0aGUgZGF0YWJhc2UgYmFzZWQgb24KKyAgICAgICAgdGhlIHVw
ZGF0ZWQgaW5wdXQuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Om1lcmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyk6CisgICAg
ICAgIE1lcmdlcyBuZXcgc3RhdGlzdGljLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgRml4
IGEgYnVnIHVuY292ZXJlZCBieSB0aGUgbmV3IHRlc3QgY2FzZXMuCisKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZVRpbWVzQWNjZXNz
ZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIEEgbmV3IGZ1bmN0
aW9uIHRoYXQgdXRpbGl6ZXMgYSBxdWVyeSBuZWVkZWQgZm9yIHRoZSBtZXJnaW5nIG9mIHR3bwor
ICAgICAgICBzdGF0aXN0aWNzLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQpOgorICAgICAgICBB
IG5ldyBmdW5jdGlvbiB0aGF0IHV0aWxpemVzIGEgcXVlcnkgbmVlZGVkIGZvciB0aGUgbWVyZ2lu
ZyBvZiB0d28KKyAgICAgICAgc3RhdGlzdGljcy4KKyAgICAgICAgCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgQWRkZWQgdGhlIG1lcmdlU3Rh
dGlzdGljcyBmdW5jdGlvbiAocHJldmlvdXNseSBvbmx5IGluIHRoZSBtZW1vcnkKKyAgICAgICAg
c3RvcmUpIHRvIHRoZSBwYXJlbnQgY2xhc3Mgbm93IHRoYXQgaXQgaXMgdXNlZCBieSBib3RoIHN0
b3Jlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAg
IFRoaXMgZnVuY3Rpb24gbm93IGNhbGxzIG1lcmdlU3RhdGlzdGljcyBvbiB0aGUgZGF0YWJhc2Ug
c3RvcmUgaWYKKyAgICAgICAgZW5hYmxlZC4KKworICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAg
IFRoaXMgZnVuY3Rpb24gYnVpbGRzIGEgdmVjdG9yIGZyb20gdGhlIHNhbXBsZSBkYXRhIHRvIHRl
c3QgdGhlCisgICAgICAgIG1lcmdlU3RhdGlzdGljcygpIGZ1bmN0aW9uIG9mIHRoZSBkYXRhYmFz
ZSBzdG9yZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bWVyZ2VTdGF0
aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyk6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAg
ICAgICBUaGlzIGNvZGUgaXMgZm9yIHRlc3RpbmcgdGhlIG1lcmdlU3RhdGlzdGljcygpIGZ1bmN0
aW9uLgorCiAyMDE5LTA5LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTW92ZSBEb3dubG9hZE1vbml0b3IgdGVzdCBzcGVlZCBtdWx0aXBs
aWVyIGZyb20gV2ViUHJvY2Vzc1Bvb2wgdG8gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwCmluZGV4IDJjMzA0ZTc5NGYyMzcxMzNmYjViMmM5N2FkODhlZDdhMDNhYTdhZjcuLjc3MTZi
NmZlNDc1ZDRhMGM5NzhiZDQ5ZTA0Njk5YmRjZjk1OGQxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNzAsNiArNzAs
OCBAQCBjb25zdGV4cHIgYXV0byBpbnNlcnRUb3BMZXZlbERvbWFpblF1ZXJ5ID0gIklOU0VSVCBJ
TlRPIFRvcExldmVsRG9tYWlucyBWQUxVRVMgKAogY29uc3RleHByIGF1dG8gZG9tYWluSURGcm9t
U3RyaW5nUXVlcnkgPSAiU0VMRUNUIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJF
IHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWluc1F1ZXJ5ID0gIklOU0VSVCBJTlRPIFN0b3JhZ2VBY2Nlc3NVbmRl
clRvcEZyYW1lRG9tYWlucyAoZG9tYWluSUQsIHRvcExldmVsRG9tYWluSUQpICIKICAgICAiU0VM
RUNUID8sIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9t
YWluID09ID8iX3M7Citjb25zdGV4cHIgYXV0byBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURv
bWFpbnNFeGlzdHNRdWVyeSA9ICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIFN0b3JhZ2VB
Y2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBkb21haW5JRCA9ID8gIgorIkFORCB0b3BM
ZXZlbERvbWFpbklEID0gKFNFTEVDVCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVS
RSByZWdpc3RyYWJsZURvbWFpbiA9ID8pKSJfczsKIGNvbnN0ZXhwciBhdXRvIHRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzVG9RdWVyeSA9ICJJTlNFUlQgSU5UTyBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvIChzb3VyY2VEb21haW5JRCwgdG9Eb21haW5JRCkgU0VMRUNUID8sIGRvbWFpbklEIEZST00g
T2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID09ID8iX3M7CiBjb25zdGV4
cHIgYXV0byB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzUXVlcnkgPSAiU0VMRUNUIEVY
SVNUUyAoU0VMRUNUIDEgRlJPTSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJj
ZURvbWFpbklEID0gPyAiCiAgICAgIkFORCB0b0RvbWFpbklEID0gKFNFTEVDVCBkb21haW5JRCBG
Uk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8pKSJfczsKQEAg
LTEwMCw2ICsxMDIsOCBAQCBjb25zdGV4cHIgYXV0byBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c0Zyb21FeGlzdHNRdWVyeSA9ICJTRUxFQ1QgRVhJU1RTIChTRUxFQwogY29uc3RleHByIGF1dG8g
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMg
U0VUIGhhZFVzZXJJbnRlcmFjdGlvbiA9ID8sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
ID0gPyAiCiAgICAgIldIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBh
dXRvIHVwZGF0ZUxhc3RTZWVuUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgbGFz
dFNlZW4gPSA/IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKK2NvbnN0ZXhwciBhdXRv
IHVwZGF0ZUZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvblF1ZXJ5ID0gIlVQREFURSBPYnNl
cnZlZERvbWFpbnMgU0VUIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFj
dGlvbiA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOworY29uc3RleHByIGF1dG8g
dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBT
RVQgZGF0YVJlY29yZHNSZW1vdmVkID0gPyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7
CiBjb25zdGV4cHIgYXV0byB1cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5ID0gIlVQREFURSBP
YnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gPyBXSEVSRSByZWdpc3RyYWJsZURvbWFp
biA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byBpc1ByZXZhbGVudFJlc291cmNlUXVlcnkgPSAiU0VM
RUNUIGlzUHJldmFsZW50IEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9t
YWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVF1
ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzVmVyeVByZXZhbGVudCA9ID8gV0hF
UkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwpAQCAtMTY4LDYgKzE3Miw3IEBAIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZShXZWJSZXNvCiAgICAgLCBtX2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50KG1f
ZGF0YWJhc2UsIGluc2VydFRvcExldmVsRG9tYWluUXVlcnkpCiAgICAgLCBtX2RvbWFpbklERnJv
bVN0cmluZ1N0YXRlbWVudChtX2RhdGFiYXNlLCBkb21haW5JREZyb21TdHJpbmdRdWVyeSkKICAg
ICAsIG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50KG1fZGF0YWJh
c2UsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc1F1ZXJ5KQorICAgICwgbV9zdG9y
YWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNFeGlzdHNTdGF0ZW1lbnQobV9kYXRhYmFzZSwg
c3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zRXhpc3RzUXVlcnkpCiAgICAgLCBtX3Rv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8obV9kYXRhYmFzZSwgdG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUb1F1ZXJ5KQogICAgICwgbV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzKG1fZGF0
YWJhc2UsIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHNRdWVyeSkKICAgICAsIG1fdG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKG1fZGF0YWJhc2UsIHRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbVF1ZXJ5KQpAQCAtMTg0LDYgKzE4OSw4IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNv
CiAgICAgLCBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUV4aXN0cyhtX2RhdGFiYXNl
LCBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21FeGlzdHNRdWVyeSkKICAgICAsIG1fbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudChtX2RhdGFiYXNlLCBtb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uUXVlcnkpCiAgICAgLCBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50KG1fZGF0
YWJhc2UsIHVwZGF0ZUxhc3RTZWVuUXVlcnkpCisgICAgLCBtX3VwZGF0ZVRpbWVzQWNjZXNzZWRE
dWVUb0ZpcnN0UGFydHlJbnRlcmFjdGlvblN0YXRlbWVudChtX2RhdGFiYXNlLCB1cGRhdGVGaXJz
dFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb25RdWVyeSkKKyAgICAsIG1fdXBkYXRlRGF0YVJlY29y
ZHNSZW1vdmVkU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFF1
ZXJ5KQogICAgICwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudChtX2RhdGFiYXNl
LCB1cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KQogICAgICwgbV9pc1ByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50KG1fZGF0YWJhc2UsIGlzUHJldmFsZW50UmVzb3VyY2VRdWVyeSkKICAgICAs
IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0
ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KQpAQCAtMzA5LDYgKzMxNiw3IEBAIGJvb2wgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzKCkKICAg
ICAgICAgfHwgbV9pbnNlcnRUb3BMZXZlbERvbWFpblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LCiAgICAgICAgIHx8IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURv
bWFpbnNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3N0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCiAgICAgICAgIHx8IG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUby5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0V4
aXN0cy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKQEAgLTMyMiw2ICszMzAsOCBAQCBi
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50
cygpCiAgICAgICAgIHx8IG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLnByZXBhcmUo
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b21FeGlzdHMucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3VwZGF0ZUxhc3RT
ZWVuU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91cGRhdGVU
aW1lc0FjY2Vzc2VkRHVlVG9GaXJzdFBhcnR5SW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1f
dXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwog
ICAgICAgICB8fCBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNR
TElURV9PSwpAQCAtNDc0LDI2ICs0ODQsNDAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhjb25zdCBSZXNvdXIKICAg
ICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluSUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBm
b3IgKGF1dG8mIHRvcEZyYW1lRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3RvcmFnZUFjY2Vzc1Vu
ZGVyVG9wRnJhbWVEb21haW5zKQotICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9z
dG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQsIHJlZ2lzdHJhYmxlRG9t
YWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pOworICAgIGZvciAoYXV0byYgdG9wRnJhbWVE
b21haW4gOiBsb2FkU3RhdGlzdGljcy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMp
IHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV9zdG9yYWdlQWNjZXNzVW5kZXJU
b3BGcmFtZURvbWFpbnNFeGlzdHNTdGF0ZW1lbnQsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUo
KSwgdG9wRnJhbWVEb21haW4pKQorICAgICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlw
KG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50LCByZWdpc3RyYWJs
ZURvbWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKTsKKyAgICB9CiAKLSAgICBmb3IgKGF1
dG8mIHRvRG9tYWluIDogbG9hZFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbykK
LSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUbywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b0RvbWFpbik7CisgICAgZm9yIChh
dXRvJiB0b0RvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8p
IHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV90b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvRXhpc3RzLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvRG9tYWluKSkKKyAg
ICAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3RvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG8sIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9Eb21haW4pOworICAgIH0KICAg
ICAKLSAgICBmb3IgKGF1dG8mIGZyb21Eb21haW4gOiBsb2FkU3RhdGlzdGljcy50b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c0Zyb20pCi0gICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3Rv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSwgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCBm
cm9tRG9tYWluKTsKKyAgICBmb3IgKGF1dG8mIGZyb21Eb21haW4gOiBsb2FkU3RhdGlzdGljcy50
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pIHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBF
eGlzdHMobV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21FeGlzdHMsIHJlZ2lzdHJhYmxlRG9t
YWluSUQudmFsdWUoKSwgZnJvbURvbWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21haW5SZWxh
dGlvbnNoaXAobV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHJlZ2lzdHJhYmxlRG9tYWlu
SUQudmFsdWUoKSwgZnJvbURvbWFpbik7CisgICAgfQogICAgIAotICAgIGZvciAoYXV0byYgdG9w
RnJhbWVEb21haW4gOiBsb2FkU3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5z
KQotICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdWJmcmFtZVVuZGVyVG9wRnJh
bWVEb21haW5zLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKTsK
KyAgICBmb3IgKGF1dG8mIHRvcEZyYW1lRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWlucykgeworICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyht
X3N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cywgcmVnaXN0cmFibGVEb21haW5JRC52
YWx1ZSgpLCB0b3BGcmFtZURvbWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlv
bnNoaXAobV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zLCByZWdpc3RyYWJsZURvbWFpbklE
LnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKTsKKyAgICB9CiAgICAgCi0gICAgZm9yIChhdXRvJiB0
b3BGcmFtZURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURv
bWFpbnMpCi0gICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZURvbWFpbnMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVE
b21haW4pOworICAgIGZvciAoYXV0byYgdG9wRnJhbWVEb21haW4gOiBsb2FkU3RhdGlzdGljcy5z
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKSB7CisgICAgICAgIGlmICghcmVsYXRpb25z
aGlwRXhpc3RzKG1fc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLCByZWdpc3Ry
YWJsZURvbWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKSkKKyAgICAgICAgICAgIGluc2Vy
dERvbWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMsIHJl
Z2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pOworICAgIH0KICAgICAK
LSAgICBmb3IgKGF1dG8mIHRvRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbykKLSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b0Rv
bWFpbik7CisgICAgZm9yIChhdXRvJiB0b0RvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8pIHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMo
bV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzLCByZWdpc3RyYWJsZURvbWFpbklE
LnZhbHVlKCksIHRvRG9tYWluKSkKKyAgICAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hp
cChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFs
dWUoKSwgdG9Eb21haW4pOworICAgIH0KICAgICAKLSAgICBmb3IgKGF1dG8mIGZyb21Eb21haW4g
OiBsb2FkU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pCi0gICAgICAg
IGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSwgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCBmcm9tRG9tYWluKTsKKyAgICBmb3IgKGF1
dG8mIGZyb21Eb21haW4gOiBsb2FkU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c0Zyb20pIHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c0Zyb21FeGlzdHMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgZnJv
bURvbWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgZnJv
bURvbWFpbik7CisgICAgfQogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpwb3B1bGF0ZUZyb21NZW1vcnlTdG9yZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUmIG1lbW9yeVN0b3JlKQpAQCAtNTEzLDYgKzUzNyw4OCBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwb3B1bGF0ZUZyb21NZW1vcnlTdG9y
ZShjb25zdCBSZXNvdXJjZQogICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKHN0YXRp
c3RpYy52YWx1ZSk7CiB9CiAKK3N0YXRpYyBib29sIHdhc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVl
VG9Vc2VySW50ZXJhY3Rpb24oYm9vbCBjdXJyZW50SGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUg
Y3VycmVudE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IG90aGVyKQoreworICAgIGlmICghY3VycmVudEhhZFVzZXJJbnRlcmFjdGlvbiAmJiAhb3RoZXIu
aGFkVXNlckludGVyYWN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gc3RkOjptYXgoV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKGN1cnJlbnRNb3N0UmVjZW50VXNlckludGVyYWN0aW9uKSwgb3RoZXIubW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUpOworCisgICAgcmV0dXJuIG90aGVyLmxhc3RTZWVuIDw9IG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgMjRfaDsKK30KKwordm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
JiBjdXJyZW50LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBvdGhlcikKK3sKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8gY3VycmVudFJlZ2lzdHJhYmxlRG9tYWlu
ID0gY3VycmVudC5nZXRDb2x1bW5UZXh0KDEpOworICAgIGF1dG8gY3VycmVudExhc3RTZWVuID0g
Y3VycmVudC5nZXRDb2x1bW5Eb3VibGUoMik7CisgICAgdW5zaWduZWQgY3VycmVudEhhZFVzZXJJ
bnRlcmFjdGlvbiA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50KDMpOworICAgIGF1dG8gY3VycmVudE1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb24gPSBjdXJyZW50LmdldENvbHVtbkRvdWJsZSg0KTsKKyAg
ICB1bnNpZ25lZCBjdXJyZW50R3JhbmRmYXRoZXJlZCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50KDUp
OworICAgIHVuc2lnbmVkIGN1cnJlbnRJc1ByZXZhbGVudCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50
KDYpOworICAgIHVuc2lnbmVkIGN1cnJlbnRJc1ZlcnlQcmV2YWxlbnQgPSBjdXJyZW50LmdldENv
bHVtbkludCg3KTsKKyAgICB1bnNpZ25lZCBjdXJyZW50RGF0YVJlY29yZHNSZW1vdmVkID0gY3Vy
cmVudC5nZXRDb2x1bW5JbnQoOCk7CisgICAgdW5zaWduZWQgY3VycmVudFRpbWVzQWNjZXNzZWRE
dWVUb0ZpcnN0UGFydHlJbnRlcmFjdGlvbiA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50KDkpOworCisg
ICAgQVNTRVJUKGN1cnJlbnRSZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlci5yZWdpc3RyYWJsZURv
bWFpbi5zdHJpbmcoKSk7CisKKyAgICBpZiAoV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGN1cnJl
bnRMYXN0U2VlbikgPCBvdGhlci5sYXN0U2VlbikKKyAgICAgICAgdXBkYXRlTGFzdFNlZW4ob3Ro
ZXIucmVnaXN0cmFibGVEb21haW4sIG90aGVyLmxhc3RTZWVuKTsKKworICAgIGlmICghb3RoZXIu
aGFkVXNlckludGVyYWN0aW9uKSB7CisgICAgICAgIC8vIElmIG1vc3QgcmVjZW50IHVzZXIgaW50
ZXJhY3Rpb24gdGltZSBoYXMgYmVlbiByZXNldCBkbyBzbyBoZXJlIHRvby4KKyAgICAgICAgLy8g
RWxzZSwgZG8gbm90aGluZy4KKyAgICAgICAgaWYgKCFvdGhlci5tb3N0UmVjZW50VXNlckludGVy
YWN0aW9uVGltZSkKKyAgICAgICAgICAgIHNldFVzZXJJbnRlcmFjdGlvbihvdGhlci5yZWdpc3Ry
YWJsZURvbWFpbiwgZmFsc2UsIHsgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHNldFVzZXJJbnRl
cmFjdGlvbihvdGhlci5yZWdpc3RyYWJsZURvbWFpbiwgdHJ1ZSwgc3RkOjptYXgoV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKGN1cnJlbnRNb3N0UmVjZW50VXNlckludGVyYWN0aW9uKSwgb3RoZXIu
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUpKTsKKworICAgIGlmIChvdGhlci5ncmFuZGZh
dGhlcmVkIHx8IGN1cnJlbnRHcmFuZGZhdGhlcmVkKQorICAgICAgICBzZXRHcmFuZGZhdGhlcmVk
KG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLCB0cnVlKTsKKyAgICBpZiAob3RoZXIuaXNQcmV2YWxl
bnRSZXNvdXJjZSB8fCBjdXJyZW50SXNQcmV2YWxlbnQpCisgICAgICAgIHNldFByZXZhbGVudFJl
c291cmNlKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAob3RoZXIuaXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UgfHwgY3VycmVudElzVmVyeVByZXZhbGVudCkKKyAgICAgICAgc2V0VmVy
eVByZXZhbGVudFJlc291cmNlKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAod2Fz
QWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbihjdXJyZW50SGFkVXNlcklu
dGVyYWN0aW9uLCBjdXJyZW50TW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgb3RoZXIpKQorICAg
ICAgICB1cGRhdGVUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24o
b3RoZXIucmVnaXN0cmFibGVEb21haW4sIGN1cnJlbnRUaW1lc0FjY2Vzc2VkRHVlVG9GaXJzdFBh
cnR5SW50ZXJhY3Rpb24gKyAxKTsKKyAgICBpZiAob3RoZXIuZGF0YVJlY29yZHNSZW1vdmVkID4g
Y3VycmVudERhdGFSZWNvcmRzUmVtb3ZlZCkKKyAgICAgICAgdXBkYXRlRGF0YVJlY29yZHNSZW1v
dmVkKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLCBvdGhlci5kYXRhUmVjb3Jkc1JlbW92ZWQpOwor
fQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRp
c3RpYyhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWMpCit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBTUUxpdGVTdGF0ZW1lbnQgZmV0Y2hPbGRTdGF0aXN0
aWNEYXRhKG1fZGF0YWJhc2UsICJTRUxFQ1QgKiBGUk9NIE9ic2VydmVkRG9tYWlucyB3aGVyZSBy
ZWdpc3RyYWJsZURvbWFpbiA9ID8iKTsKKyAgICBpZiAoZmV0Y2hPbGRTdGF0aXN0aWNEYXRhLnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgZmV0Y2hPbGRTdGF0aXN0aWNEYXRhLmJp
bmRUZXh0KDEsIHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IGZldGNoT2xkU3RhdGlzdGljRGF0YS5zdGVwKCkgIT0gU1FMSVRFX1JP
VykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWMu
IFN0YXRlbWVudCBmYWlsZWQgdG8gYmluZCBvciBkb21haW4gd2FzIG5vdCBmb3VuZCwgZXJyb3Ig
bWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1lcmdlKGZldGNoT2xkU3RhdGlzdGljRGF0YSwgc3RhdGlzdGljKTsKK30KKwordm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3Rv
cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IHN0YXRpc3Rp
Y3MpIHsKKyAgICAgICAgaWYgKGNvbmZpcm1Eb21haW5Eb2VzTm90RXhpc3Qoc3RhdGlzdGljLnJl
Z2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGluc2VydE9ic2VydmVkRG9tYWluKHN0YXRp
c3RpYyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lcmdlU3RhdGlzdGljKHN0YXRpc3Rp
Yyk7CisgICAgfQorCisgICAgLy8gTWFrZSBhIHNlcGFyYXRlIHBhc3MgZm9yIGludGVyLWRvbWFp
biByZWxhdGlvbnNoaXBzIHNvIHdlCisgICAgLy8gY2FuIHJlZmVyIHRvIHRoZSBPYnNlcnZlZERv
bWFpbiB0YWJsZSBlbnRyaWVzCisgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNz
KQorICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKHN0YXRpc3RpYyk7Cit9CisKIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNhbGN1bGF0ZUFuZFN1Ym1p
dFRlbGVtZXRyeSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBA
IC0xMTk0LDcgKzEzMDAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogICAgIGVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbik7CiAgICAgCiAgICAg
aWYgKG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5iaW5kSW50KDEsIHZhbHVlKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LmJpbmRU
ZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRl
R3JhbmRmYXRoZXJlZFN0YXRlbWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNR
TElURV9PSwogICAgICAgICB8fCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQuc3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpz
ZXRHcmFuZGZhdGhlcmVkIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31z
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMTY2Miw2ICsxNzY4LDM4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3Ry
CiAgICAgc2V0UHJldmFsZW50UmVzb3VyY2UoZG9tYWluLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNl
OjpWZXJ5SGlnaCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnVwZGF0ZVRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBpbnQgdmFsdWUpCit7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAobV91cGRhdGVUaW1lc0FjY2Vzc2VkRHVl
VG9GaXJzdFBhcnR5SW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmluZEludCgxLCB2YWx1ZSkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlVGltZXNBY2Nlc3NlZER1ZVRvRmlyc3RQYXJ0eUlu
dGVyYWN0aW9uU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IG1fdXBkYXRlVGltZXNBY2Nlc3NlZER1ZVRvRmlyc3RQYXJ0eUludGVy
YWN0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRv
VXNlckludGVyYWN0aW9uIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31z
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHJlc2V0UmVzdWx0
ID0gbV91cGRhdGVUaW1lc0FjY2Vzc2VkRHVlVG9GaXJzdFBhcnR5SW50ZXJhY3Rpb25TdGF0ZW1l
bnQucmVzZXQoKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9
PSBTUUxJVEVfT0spOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjp1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgaW50IHZhbHVlKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgaWYgKG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFs
dWUpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0
YXRlbWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAg
ICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRF
X0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZURhdGFS
ZWNvcmRzUmVtb3ZlZCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCByZXNldFJlc3VsdCA9
IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LnJlc2V0KCk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBmMWQ1NjU1ZGVlYmNkYjA0N2NkZDk2
ZDJlOTM1NjM0Y2VhYzAxZDNhLi41M2I0ODM1NGQ2ZTZkMjgzMWI0MmEzM2NmZmEyMDkzMDFjNzZk
OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV29ya1F1
ZXVlJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0
b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdm9pZCBwb3B1bGF0ZUZyb21NZW1vcnlT
dG9yZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUmKTsKLQorICAgIHZv
aWQgbWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTEwNSw2ICsxMDUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIFNlY29uZHMpIG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHZvaWQgbWVyZ2VTdGF0aXN0
aWMoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50JiwgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgY2xlYXJE
YXRhYmFzZUNvbnRlbnRzKCk7CiAgICAgYm9vbCBpbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBpbnNlcnREb21haW5SZWxhdGlvbnNo
aXBzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKQEAgLTExNSw2ICsxMTcsOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgY29uZmlybURvbWFpbkRvZXNOb3RFeGlzdChjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwogI2VuZGlmCiAgICAgdm9pZCB1cGRhdGVMYXN0U2Vlbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKTsKKyAgICB2b2lkIHVwZGF0ZVRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIGludCk7CisgICAgdm9pZCB1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBpbnQpOwogICAgIHZvaWQgc2V0VXNlckludGVyYWN0aW9uKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFdhbGxUaW1lKTsK
ICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29v
a2llc0ZvcigpIGNvbnN0OwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1Rv
QmxvY2tCdXRLZWVwQ29va2llc0ZvcigpIGNvbnN0OwpAQCAtMTc1LDYgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1faW5zZXJ0VG9wTGV2ZWxEb21haW5T
dGF0ZW1lbnQ7CiAgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9kb21haW5J
REZyb21TdHJpbmdTdGF0ZW1lbnQ7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fc3Rv
cmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50OworICAgIFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudCBtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0c1N0
YXRlbWVudDsKICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV90b3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvOwogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNUb0V4aXN0czsKICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQg
bV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb207CkBAIC0xOTEsNiArMTk2LDggQEAgcHJpdmF0
ZToKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbUV4aXN0czsKICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9t
b3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50OwogICAgIFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50OworICAgIG11dGFibGUgV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlVGltZXNBY2Nlc3NlZER1ZVRvRmlyc3RQYXJ0eUludGVy
YWN0aW9uU3RhdGVtZW50OworICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1f
dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50OwogICAgIFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50OwogICAgIG11dGFibGUg
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1faXNQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsK
ICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3Vy
Y2VTdGF0ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmgKaW5kZXggODc5ZTFhZmNmYjg2MjI5NzY0NmI1MDA4MDZmZmM0ZjlhMGFhMDM0Ny4u
ZDNjNjg1MWViZDUwODM0NjRiMGZjMWZmY2RlZWYyZmY0NmFlNzY4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtNjEsNyArNjEsNyBA
QCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OktleWVkRW5jb2Rlcj4gY3Jl
YXRlRW5jb2RlckZyb21EYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBtZXJnZVdpdGhEYXRhRnJvbURl
Y29kZXIoV2ViQ29yZTo6S2V5ZWREZWNvZGVyJik7CiAKLSAgICB2b2lkIG1lcmdlU3RhdGlzdGlj
cyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CisgICAgdm9pZCBtZXJnZVN0YXRp
c3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgcHJvY2Vzc1N0YXRpc3RpY3MoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJik+JikgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNmY2MWVkMzQzZGUyNjZhYTM1ZjllYzBkYTc0
MjExMDE5MzYyYWZkYS4uOTlhNjcxMDY2Njk2ZjRmZDI4NmZjZDdkMjA3NWI0ZTc2NTk1M2ZmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTA4LDYgKzEw
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xhc3NpZnlQcmV2YWxlbnRSZXNvdXJj
ZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNTdG9yYWdlSWZOZWVkZWQoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
RG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9w
ZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFj
Y2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAyYmJlZGNiOTYzN2ZlMzYxZmMzMDhl
Y2U0Njk2OTk3NDQxOWZiNjhjLi4yMDMyZDczMjVkNWUzZTViNGZmYzk1ZWMyYjg2OTFhMTcyOTBl
NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtMjY0LDE5ICsyNjQsMTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXIKICAgICAvLyBj
b21pbmcgZnJvbSBJUEMuIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mgb25seSBjb250YWlucyBzdHJp
bmdzIHdoaWNoIGFyZSBzYWZlIHRvIG1vdmUgdG8gb3RoZXIgdGhyZWFkcyBhcyBsb25nCiAgICAg
Ly8gYXMgbm9ib2R5IG9uIHRoaXMgdGhyZWFkIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRob3NlIHN0
cmluZ3MuCiAgICAgcG9zdFRhc2soW3RoaXMsIHN0YXRpc3RpY3MgPSBXVEZNb3ZlKHN0YXRpc3Rp
Y3MpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlIHx8ICFpczxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSkpCisg
ICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgYXV0byYgbWVtb3J5U3RvcmUgPSBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSk7Ci0gICAgCi0gICAgICAgIG1lbW9yeVN0
b3JlLm1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKHN0YXRpc3RpY3MpKTsKKyAgICAgICAgbV9zdGF0
aXN0aWNzU3RvcmUtPm1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKHN0YXRpc3RpY3MpKTsKIAogICAg
ICAgICAvLyBXZSBjYW4gY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3QgdG8gcHJvY2VzcyBzdGF0
aXN0aWNzIHNpbmNlIHdlJ3JlIGRvaW5nIGl0IHN5bmNocm9ub3VzbHkgYmVsb3cuCi0gICAgICAg
IG1lbW9yeVN0b3JlLmNhbmNlbFBlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3QoKTsK
KyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNhbmNlbFBlbmRpbmdTdGF0aXN0aWNzUHJvY2Vz
c2luZ1JlcXVlc3QoKTsKIAogICAgICAgICAvLyBGaXJlIGJlZm9yZSBwcm9jZXNzaW5nIHN0YXRp
c3RpY3MgdG8gcHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmFzdCBhcyBwb3NzaWJsZSB0
byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgICAgICBtZW1vcnlTdG9yZS51cGRhdGVDb29raWVC
bG9ja2luZyhbXSgpIHsgfSk7Ci0gICAgICAgIG1lbW9yeVN0b3JlLnByb2Nlc3NTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHMoKTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnVwZGF0ZUNvb2tp
ZUJsb2NraW5nKFtdKCkgeyB9KTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnByb2Nlc3NT
dGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKICAgICB9KTsKIH0KIApAQCAtNTgzLDYgKzU4MSwz
NSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0TGFzdFNlZW4oY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbgogICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KKwordm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJl
dmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4g
PSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4u
aXNvbGF0ZWRDb3B5KCksIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZh
bGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3Rv
cmUpIHsKKyAgICAgICAgICAgIGF1dG8gc3RhdGlzdGljID0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhkb21haW4pOworICAgICAgICAgICAgc3RhdGlzdGljLmxhc3RTZWVuID0gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGxhc3RTZWVuLnNlY29uZHMoKSk7CisgICAgICAgICAgICBzdGF0aXN0aWMu
aGFkVXNlckludGVyYWN0aW9uID0gaGFkVXNlckludGVyYWN0aW9uOworICAgICAgICAgICAgc3Rh
dGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24uc2Vjb25kcygpKTsKKyAgICAgICAgICAg
IHN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkID0gaXNHcmFuZGZhdGhlcmVkOworICAgICAgICAgICAg
c3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSBpc1ByZXZhbGVudDsKKyAgICAgICAgICAg
IHN0YXRpc3RpYy5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSA9IGlzVmVyeVByZXZhbGVudDsKKyAg
ICAgICAgICAgIHN0YXRpc3RpYy5kYXRhUmVjb3Jkc1JlbW92ZWQgPSBkYXRhUmVjb3Jkc1JlbW92
ZWQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghdG9wRnJhbWVEb21haW4uaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gdG9wRnJh
bWVEb21haW5zOworICAgICAgICAgICAgICAgIHRvcEZyYW1lRG9tYWlucy5hZGQodG9wRnJhbWVE
b21haW4pOworICAgICAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVE
b21haW5zID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbnMpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljczsKKyAgICAg
ICAgICAgIHN0YXRpc3RpY3MuYXBwZW5kKFdURk1vdmUoc3RhdGlzdGljKSk7CisgICAgICAgICAg
ICBtX3N0YXRpc3RpY3NTdG9yZS0+bWVyZ2VTdGF0aXN0aWNzKFdURk1vdmUoc3RhdGlzdGljcykp
OworICAgICAgICB9CisgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIH0pOworfQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAyYzdkMzc4
YjA0M2M5NWUxNjU1ODdlNjZhNWY3NDNlMGY4OTI2NmMxLi45YWYxMmZiZjM1NGZiMWE0MWQ3MTE0
N2VmM2QwY2FhM2I5YTM0NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCkBAIC0xMjksNiArMTI5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24pPiYmKTsKICAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
U2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1lcmdlU3Rh
dGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiwgU2Vjb25kcywgYm9vbCwgU2Vjb25kcywgYm9vbCwgYm9vbCwgYm9vbCwgdW5zaWdu
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRS
ZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZHVtcFJl
c291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggZjUyZjQwZmJkY2Q2Y2Y5MzkzYmU5MDZkNGIwYzI1ZWQwMTRjYzFmNy4uMzc4ZDlkMjQ0YTRk
YTkxZTlhNDU0NjEyNzhhNWY1YTcwM2RlNTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTk3NCw2ICs5NzQsMTkgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWEKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Om1lcmdl
U3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMg
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQ
cmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29y
a1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPm1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhkb21haW4sIHRvcEZyYW1l
RG9tYWluLCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVy
YWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRh
dGFSZWNvcmRzUmVtb3ZlZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgIH0KK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+IGRvbWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRv
KiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDkwY2Y3
MzJmNzJiMzkxOGY2NmJjZDM1ZDIwNDcyOTJhMDM2MDEzZDcuLjk0N2RjNGU0NDBlZjViNzcwOTMy
ZjcxYzM4YTIzYmMzYmVlMjc0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKQEAgLTI0Miw2ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vj
b25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0
aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBTZWNvbmRzLCBib29sLCBT
ZWNvbmRzLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCwgYm9vbCwgdW5zaWduZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5E
YXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkKFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rl
c3QoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhNzc2NjNlN2NmNjQxMzhiNjc5MTgwYjFjOWFjNjRiNDcz
ODljNzFiLi4xZWY4ZmJjMGRhYzE0ZjM2Yjc3ZmM3NTkxZTI0NGI5ZTMyNTkxODdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTk0LDYgKzk0LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIElzVmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluKSAtPiAo
Ym9vbCBpc1ZlcnlQcmV2YWxlbnQpIEFzeW5jCiAgICAgU2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRz
KSAtPiAoKSBBc3luYwogICAgIFNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIFNlY29uZHMgc2Vjb25k
cykgLT4gKCkgQXN5bmMKKyAgICBNZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFNlY29uZHMgbGFzdFNl
ZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVy
eVByZXZhbGVudCwgdWludDY0X3QgZGF0YVJlY29yZHNSZW1vdmVkKSAtPiAoKSBBc3luYwogICAg
IFNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0UHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBI
YWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4gKGJvb2wgaGFkVXNlckludGVyYWN0aW9u
KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggOTYwZjlmYjBmMjJiOWVjODA5ZTY1MWJlYjllNWE3
NjMwYzZlZDk1NC4uMjE0YjEwOGQyNDQ2N2I2ZWZhNjdmNjk0MzRjNzg0MjZmM2QzMmUyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuY3BwCkBAIC0xMTksNiArMTE5LDE3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
CiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWVyZ2VT
dGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4sIGRvdWJsZSBsYXN0U2VlbiwgYm9vbCBo
YWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29s
IGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQs
IHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc01lcmdlU3RhdGlzdGljRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
Cit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5tZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KHRvcEZyYW1lRG9tYWluKS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgbGFzdFNlZW4gfSwgaGFkVXNl
ckludGVyYWN0aW9uLCBTZWNvbmRzIHsgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiB9LCBpc0dy
YW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVt
b3ZlZCwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihj
b250ZXh0KTsKKyNlbmRpZgorfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRl
eCBjY2Y1OTEzODlmYjkxNWYyMzUxNmQzMDQ4YzllMjdkY2MxOTdlMzI1Li5mMmExNzgyOTZlYTc5
ZWI0ZWY1NTdhYjBlMDc4YjlhZDZlYTlhYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtNDksNiArNDksOCBA
QCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlV2l0aENvbXBsZXRpbwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2Rl
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5jdGlv
biBjb21wbGV0aW9uSGFuZGxlcik7ICAgIAogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBX
S19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdFNlZW4oV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgZG91Ymxl
IHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NMYXN0
U2VlbkZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlv
bkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c01lcmdlU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFzdFNlZW4s
IGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJl
dmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0Z1bmN0aW9uIGNvbXBsZXRpb25I
YW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wg
dmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiko
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDMxYTcyNTdjMTAxYTEw
MDU3MTI4YjY4NzViZDQzYjcwNmMzNGU4NTMuLmNlNjVjNjM5ODRkMjgyYTJhYTFjZTM1YzUzNzg1
OTJkZDY0ZDFkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTM1LDYgKzUzNSwxNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlNldExhc3RTZWVuKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGxhc3RTZWVu
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3Jh
bmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2ln
bmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6TWVyZ2VTdGF0aXN0aWNGb3JU
ZXN0aW5nKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluLCBsYXN0U2Vl
biwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5k
ZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3Zl
ZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2Fn
ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IDY0NzEzYWIxYTBjZmQyNmRmMmY4NjFkYjFhNGFlN2FmMzg2
ZGI5NmYuLmEzNWFlOWQ2NjBlYjdkYzMxMTg3YzBjNzFlOTgzM2NmZDhkYWNkYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0xMTMsNiArMTEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVj
b3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgbWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgU2Vjb25kcywgYm9vbCwgU2Vjb25k
cywgYm9vbCwgYm9vbCwgYm9vbCwgdW5zaWduZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25J
RCwgT3B0aW9uYWw8U2Vjb25kcz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRDYWNoZU1heEFnZUNhcChQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDY5MzU1ZDc5
N2MyNWM4YmMyMDE5OWY3N2FkMDg2NTQwMDUwOTY0ZTQuLjZkNTU4NDUyZmE0OWUxYTE1YzViMjM1
MWMwNDE5NmViMTE1M2VlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNTMzLDYgKzE1MzMsMjEg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRMYXN0U2Vlbihjb25zdCBVUkwmIHVybCwgU2Vj
b25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGEKICAgICB9CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJsICwgY29uc3QgVVJM
JiB0b3BGcmFtZVVybCwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24s
IFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQs
IGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVj
b3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpIHx8IHVybC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBwcm9jZXNzLT5tZXJnZVN0YXRp
c3RpY0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsg
dXJsIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVVcmwgfSwgbGFzdFNl
ZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFu
ZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92
ZWQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LmNvcHlSZWYoKV0geyB9KTsKKyAgICB9Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZhbHVlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOGE1ZmViYTgzYjdkYTBkY2M3NGI3OGM1
YTAxOTJjMGY3ZjUyZWM3Zi4uYjRhYWNkMWVhNDA2YWNkOGFkMGIzY2M1MjVmZTFjZWI1NWQwYzU1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaApAQCAtMTYyLDYgKzE2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFVzZUlUUERhdGFiYXNlKGJvb2wpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vl
bihjb25zdCBVUkwmLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgbWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdG9w
RnJhbWVVcmwsIFNlY29uZHMsIGJvb2wsIFNlY29uZHMsIGJvb2wsIGJvb2wsIGJvb2wsIHVuc2ln
bmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Tm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3Qo
Ym9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFBydW5lRW50
cmllc0Rvd25UbyhzaXplX3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTRiNmI2NGQzMDFj
ZjY3MzhjMjc2NDk4Y2FhMDZiNjhiYjI1N2UyZS4uMGQzOWYzZTBlZGFlYTlhNGNhYzZhNmU0MDY5
YTBmMjYyZjgwOGZkYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA5LTMwICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgcmVzb3VyY2UgbG9hZCBz
dGF0aXN0aWNzIGFyZSBuZXZlciBtZXJnZWQgaW50byB0aGUgU1FMaXRlIERhdGFiYXNlIGJhY2tl
bmQgKDIwMjM3MikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDIzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1ODU0NTQyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RpbmcgZnVu
Y3Rpb25hbGl0eSB0byB0aGUgbWVyZ2VTdGF0aXN0aWNzKCkgZnVuY3Rpb24gb2YgdGhlIAorICAg
ICAgICBTUUxpdGUgYmFja2VuZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRNZXJnZVN0YXRpc3RpY0NhbGxiYWNrKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRNZXJnZVN0YXRpc3RpYyk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorCiAyMDE5LTA5LTMwICBaaGlm
ZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBbcmVzdWx0cy53ZWJr
aXQub3JnIFRpbWVsaW5lXSBOZXcgYXhpcyBzdHlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
aW5kZXggYTAxZDRmYjUzOTBkNGFkNGZjNTZmNmRmODY3MzY5YmY5YzY2YTY5My4uNDJhYWQ1NGUz
MTEzYTM4M2Y3MzQ5MTc3NDE1MjE3Y2VkOTkwZDRhZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCkBAIC0yOTgsNiArMjk4LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQg
c2V0U3RhdGlzdGljc0RlYnVnTW9kZShib29sZWFuIHZhbHVlLCBvYmplY3QgY29tcGxldGlvbkhh
bmRsZXIpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKERPTVN0cmluZyBob3N0TmFtZSwgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NMYXN0U2VlbihET01TdHJpbmcgaG9zdE5hbWUsIGRvdWJsZSBzZWNv
bmRzLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgc2V0U3RhdGlzdGljc01l
cmdlU3RhdGlzdGljKERPTVN0cmluZyBob3N0TmFtZSwgRE9NU3RyaW5nIHRvcEZyYW1lRG9tYWlu
LCBkb3VibGUgbGFzdFNlZW4sIGJvb2xlYW4gaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbGVhbiBpc0dyYW5kZmF0aGVyZWQsIGJvb2xlYW4g
aXNQcmV2YWxlbnQsIGJvb2xlYW4gaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBsb25nIGRhdGFS
ZWNvcmRzUmVtb3ZlZCwgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShET01TdHJpbmcgaG9zdE5hbWUsIGJvb2xlYW4gdmFs
dWUsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVmVy
eVByZXZhbGVudFJlc291cmNlKERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiB2YWx1ZSwgb2Jq
ZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBib29sZWFuIGlzU3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKERPTVN0cmluZyBob3N0TmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDljMTBi
NDA4NGQ5YmYzZDlmZmQ0YmQwN2E1ZWI1ZmY0M2VjZDk0ZDguLjAxYjc1NjJkMWMwYzhkMTIzNjkz
NDA2NzFmYzAyZTNkN2U2YWUxOTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zNTYsNiArMzU2LDEx
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlz
dGljc0NhbGxEaWRTZXRMYXN0U2VlbkNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJDYWxsRGlkTWVyZ2VTdGF0aXN0aWMiKSkgeworICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRp
c3RpY3NDYWxsRGlkU2V0TWVyZ2VTdGF0aXN0aWNDYWxsYmFjaygpOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJDYWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2UiKSkgewogICAgICAgICBtX3Rlc3RSdW5u
ZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2VDYWxsYmFjaygpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKaW5kZXggODJkYjY3NDI5OTljNzdkYmJjZmMzNTI0NjU0MDY1NzRiYjM2MzUxNy4uMDExMDRh
Y2Y4NGJhYjEyN2U1MTczZDM3OTMyZTQyOTlhZmEzYzE1NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03MzIsNiAr
NzMyLDcgQEAgZW51bSB7CiAgICAgU2V0U3RhdGlzdGljc0RlYnVnTW9kZUNhbGxiYWNrSUQsCiAg
ICAgU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlQ2FsbGJhY2tJRCwK
ICAgICBTZXRTdGF0aXN0aWNzTGFzdFNlZW5DYWxsYmFja0lELAorICAgIFNldFN0YXRpc3RpY3NN
ZXJnZVN0YXRpc3RpY0NhbGxiYWNrSUQsCiAgICAgU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlQ2FsbGJhY2tJRCwKICAgICBTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlQ2Fs
bGJhY2tJRCwKICAgICBTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uQ2FsbGJhY2tJ
RCwKQEAgLTE0NTMsNiArMTQ1NCw1NyBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxs
RGlkU2V0TGFzdFNlZW5DYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTZXRT
dGF0aXN0aWNzTGFzdFNlZW5DYWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRT
dGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVm
IHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9u
LCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQs
IGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVj
b3Jkc1JlbW92ZWQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY2FjaGVU
ZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljQ2FsbGJhY2tJRCwg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
Pj4ga2V5czsKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gdmFsdWVzOworCisg
ICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9z
dE5hbWUiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhK
U1N0cmluZyhob3N0TmFtZSkpKTsKKyAgICAKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUb3BGcmFtZURvbWFpbiIpKSk7CisgICAgdmFsdWVz
LmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKHRvcEZyYW1lRG9tYWlu
KSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiTGFzdFNlZW4iKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0RvdWJsZUNy
ZWF0ZShsYXN0U2VlbikpKTsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkhhZFVzZXJJbnRlcmFjdGlvbiIpKSk7CisgICAgdmFsdWVzLmFw
cGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShoYWRVc2VySW50ZXJhY3Rpb24pKSk7CisKKyAg
ICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNb3N0
UmVjZW50VXNlckludGVyYWN0aW9uIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tE
b3VibGVDcmVhdGUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbikpKTsKKworICAgIGtleXMuYXBw
ZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzR3JhbmRmYXRoZXJl
ZCIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShpc0dyYW5k
ZmF0aGVyZWQpKSk7CisKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJJc1ByZXZhbGVudCIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdL
KFdLQm9vbGVhbkNyZWF0ZShpc1ByZXZhbGVudCkpKTsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzVmVyeVByZXZhbGVudCIpKSk7Cisg
ICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShpc1ZlcnlQcmV2YWxlbnQp
KSk7CisKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJEYXRhUmVjb3Jkc1JlbW92ZWQiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhX
S1VJbnQ2NENyZWF0ZShkYXRhUmVjb3Jkc1JlbW92ZWQpKSk7CisKKyAgICBWZWN0b3I8V0tTdHJp
bmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1Zh
bHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5z
aXplKCk7ICsraSkgeworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsKKyAgICAg
ICAgcmF3VmFsdWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMiKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3Jl
YXRlKHJhd0tleXMuZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOwor
ICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVs
bHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRNZXJnZVN0
YXRpc3RpY0NhbGxiYWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFNldFN0YXRp
c3RpY3NNZXJnZVN0YXRpc3RpY0NhbGxiYWNrSUQpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnNl
dFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2
YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjYWNoZVRlc3RSdW5u
ZXJDYWxsYmFjayhTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VDYWxsYmFja0lELCBjb21w
bGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDQ5ZTVmZjA4NzYwNjc5ZjhmNzNiNTVjZWQ5ZmZjNzU1
MGExZDZiZGYuLmYxNzAwMTI5ODMxYjZmOTQ3MDc2MmYwMzBmZWNkNzAxYzRkM2JhM2IgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CkBAIC0zOTYsNiArMzk2LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRT
ZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzTGFzdFNlZW4oSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGRvdWJsZSBzZWNvbmRzLCBK
U1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlk
U2V0TGFzdFNlZW5DYWxsYmFjaygpOworICAgIHZvaWQgc2V0U3RhdGlzdGljc01lcmdlU3RhdGlz
dGljKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbiwgZG91
YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBi
b29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBKU1ZhbHVl
UmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0TWVy
Z2VTdGF0aXN0aWNDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0UHJldmFsZW50UmVz
b3VyY2VDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0
aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGU3ZGJlMzg3N2RjMTJmN2UyODZhMzMyZTcxOGM0YjUzNGQ5Y2EwMzcuLjBiZDc3NjFiYmZj
NTUwNGVmMjA1OWQ5YTFmM2I0NDc1NzYwNzRlMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMjYxLDYgKzMyNjEsMTQgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6c2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLU3RyaW5nUmVmIGhvc3QsIGRvdWJsZSBzZWNv
bmRzKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldExhc3RTZWVuKCk7CiB9CiAKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhXS1N0cmluZ1Jl
ZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbiwgZG91YmxlIGxhc3RTZWVuLCBib29s
IGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJv
b2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVu
dCwgaW50IGRhdGFSZWNvcmRzUmVtb3ZlZCkKK3sKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxs
YmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc01lcmdlU3RhdGlzdGljKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCks
IGhvc3QsIHRvcEZyYW1lRG9tYWluLCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1Zl
cnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlz
dGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1Rp
bWVvdXQpOworICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZE1lcmdlU3RhdGlzdGljKCk7Cit9
CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShX
S1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlKQogewogICAgIFJlc291cmNlU3RhdGlzdGljc0Nh
bGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAppbmRleCBmZDFjNTJhYTQwYWYyNmQ0ZGQwZDg2MmEyMDM5NjY4N2MyNjg3MjBm
Li42YzJkMmQ4ODZlMDNiNzdiNjJiZTU1MzhhMjJiOWIwZThkNGM0MWU0IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yMTAsNiArMjEwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U3RhdGlzdGljc0RlYnVnTW9kZShib29sIHZhbHVlKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShXS1N0cmluZ1JlZiBob3N0
TmFtZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTGFzdFNlZW4oV0tTdHJpbmdSZWYgaG9zdE5h
bWUsIGRvdWJsZSBzZWNvbmRzKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3Rp
YyhXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbiwgZG91YmxlIGxh
c3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlz
VmVyeVByZXZhbGVudCwgaW50IGRhdGFSZWNvcmRzUmVtb3ZlZCk7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1Jl
ZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7CiAgICAgU3RyaW5nIGR1bXBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4
IGM0ZDE4YWJkOWE1YzRhYzMzYmYyYWUwMjZjMjhmYjBlNjIyZTNhNzMuLjJmOGIzMDZlMmM4Yzg3
M2ZmZDMxNzk2MWM4MTJjNWJjODgyYjYzY2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCkBAIC0xMTAwLDYgKzExMDAsMzYgQEAgV0tSZXRhaW5QdHI8V0tUeXBl
UmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAorICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc01lcmdl
U3RhdGlzdGljIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9
PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisKKyAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1l
c3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2Fn
ZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVLZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpKTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRvcEZyYW1lRG9tYWluS2V5ID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVG9wRnJhbWVEb21haW4iKSk7CisgICAgICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBsYXN0U2VlbktleSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkxhc3RTZWVuIikpOworICAgICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gaGFkVXNlckludGVyYWN0aW9uS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiSGFkVXNlckludGVyYWN0aW9uIikpOworICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbktleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24i
KSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpc0dyYW5kZmF0aGVyZWRLZXkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc0dyYW5kZmF0aGVyZWQi
KSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpc1ByZXZhbGVudEtleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzUHJldmFsZW50IikpOworICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaXNWZXJ5UHJldmFsZW50S2V5ID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNWZXJ5UHJldmFsZW50IikpOworICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGF0YVJlY29yZHNSZW1vdmVkS2V5ID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRGF0YVJlY29yZHNSZW1vdmVkIikp
OworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGltZXNBY2Nlc3NlZEZpcnN0UGFy
dHlJbnRlcmFjdGlvbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlRpbWVzQWNjZXNzZWRGaXJzdFBhcnR5SW50ZXJhY3Rpb24iKSk7CisKKyAgICAgICAgV0tTdHJp
bmdSZWYgaG9zdE5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGhvc3ROYW1lS2V5LmdldCgpKSk7Cisg
ICAgICAgIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB0b3BG
cmFtZURvbWFpbktleS5nZXQoKSkpOworICAgICAgICBXS0RvdWJsZVJlZiBsYXN0U2VlbiA9IHN0
YXRpY19jYXN0PFdLRG91YmxlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VC
b2R5RGljdGlvbmFyeSwgbGFzdFNlZW5LZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tCb29sZWFuUmVm
IGhhZFVzZXJJbnRlcmFjdGlvbiA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGhhZFVzZXJJbnRlcmFjdGlv
bktleS5nZXQoKSkpOworICAgICAgICBXS0RvdWJsZVJlZiBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXko
bWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uS2V5LmdldCgp
KSk7CisgICAgICAgIFdLQm9vbGVhblJlZiBpc0dyYW5kZmF0aGVyZWQgPSBzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9u
YXJ5LCBpc0dyYW5kZmF0aGVyZWRLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tCb29sZWFuUmVmIGlz
UHJldmFsZW50ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaXNQcmV2YWxlbnRLZXkuZ2V0KCkpKTsKKyAg
ICAgICAgV0tCb29sZWFuUmVmIGlzVmVyeVByZXZhbGVudCA9IHN0YXRpY19jYXN0PFdLQm9vbGVh
blJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGlz
VmVyeVByZXZhbGVudEtleS5nZXQoKSkpOworICAgICAgICBXS1VJbnQ2NFJlZiBkYXRhUmVjb3Jk
c1JlbW92ZWQgPSBzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGRhdGFSZWNvcmRzUmVtb3ZlZEtleS5nZXQoKSkp
OworICAgICAgICAKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRp
c3RpY3NNZXJnZVN0YXRpc3RpYyhob3N0TmFtZSwgdG9wRnJhbWVEb21haW4sIFdLRG91YmxlR2V0
VmFsdWUobGFzdFNlZW4pLCBXS0Jvb2xlYW5HZXRWYWx1ZShoYWRVc2VySW50ZXJhY3Rpb24pLCBX
S0RvdWJsZUdldFZhbHVlKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24pLCBXS0Jvb2xlYW5HZXRW
YWx1ZShpc0dyYW5kZmF0aGVyZWQpLCBXS0Jvb2xlYW5HZXRWYWx1ZShpc1ByZXZhbGVudCksIFdL
Qm9vbGVhbkdldFZhbHVlKGlzVmVyeVByZXZhbGVudCksIFdLVUludDY0R2V0VmFsdWUoZGF0YVJl
Y29yZHNSZW1vdmVkKSk7CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAog
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlIikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CiAKQEAgLTE4MDEsNiAr
MTgzMSwxMiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRMYXN0U2VlbigpCiAgICAgV0tQ
YWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKIH0KIAordm9p
ZCBUZXN0SW52b2NhdGlvbjo6ZGlkTWVyZ2VTdGF0aXN0aWMoKQoreworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkNhbGxEaWRNZXJnZVN0YXRpc3RpYyIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3
KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB2b2lkIFRlc3RJbnZvY2F0
aW9uOjpkaWRTZXRQcmV2YWxlbnRSZXNvdXJjZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQ2FsbERpZFNldFByZXZhbGVudFJlc291cmNlIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oCmluZGV4IDc2YWE5YjhlMWRjMDJlYzhhZDkzODY5NDE1NzQ1OGYxOTVk
YTNjZDYuLmEyNjVlYjliMjZlOTRkMWU0YThmZmRjZWY1ZGUyOTQzOTUxYmI0MDUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkU2V0U3RhdGlzdGljc0RlYnVnTW9kZSgpOwogICAgIHZvaWQgZGlkU2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoKTsKICAgICB2b2lkIGRpZFNldExhc3RTZWVu
KCk7CisgICAgdm9pZCBkaWRNZXJnZVN0YXRpc3RpYygpOwogICAgIHZvaWQgZGlkU2V0UHJldmFs
ZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGRpZFNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZSgpOwog
ICAgIHZvaWQgZGlkU2V0SGFzSGFkVXNlckludGVyYWN0aW9uKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDBjY2ExZjVj
NjUyZWQzYTg3NDM0MWY1ODQ1YWRkNjIwZjk2Mjg2OS4uODVjZjkwOGViYmYzNjM1NjBiYzVlZjNj
MWM2MTI3YzRlOTE5ZTliMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA5LTMwICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQg
cmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFyZSBuZXZlciBtZXJnZWQgaW50byB0aGUgU1FMaXRl
IERhdGFiYXNlIGJhY2tlbmQgKDIwMjM3MikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1ODU0
NTQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGxheW91dCB0ZXN0cyB0byB0ZXN0IHN1Y2Nlc2Z1bCBtZXJnaW5nIG9mIHJlc291cmNlIGxv
YWQKKyAgICAgICAgc3RhdGlzdGljcyBpbnRvIFNRTGl0ZSBiYWNrZW5kLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW5v
dC1vdmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90LW92
ZXJ3cml0ZS1kYXRhYmFzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1kYXRhYmFzZS5odG1sOiBB
ZGRlZC4KKwogMjAxOS0wOS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFBhZ2VzIHdpdGggV2ViIFdvcmtlcnMgY2Fubm90IGVudGVyIHRoZSBiYWNrIC8gZm9y
d2FyZCBjYWNoZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQzZTVlZWVkYmYxYjQzNWY5NmMzYTIwYmY4MTQwMWFlZTQzMzE5ODEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90LW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUt
ZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzM3Y2QzYWIwZGZmNDJhNzk3MTMwOWQyYzVkZDUyMmFhOTU1ZmFjZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwKQEAgLTAs
MCArMSw2OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAg
ICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHRpdGxlPlRlc3RzIHRoYXQgbWVyZ2VkIHN0
YXRpc3RpYyBkb2VzIG5vdCBvdmVyd3JpdGUgb2xkIHN0YXRpc3RpYzwvdGl0bGU+CisgICAgPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJzZXRUaW1lb3V0KCdzZXRVcEFuZFJ1bigpJywgMCkiPgorPHNjcmlwdD4KKyAgICBp
ZiAodGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAg
ICBjb25zdCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBzYW1wbGVU
b3BGcmFtZVVSTCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IG9sZGVyVGlt
ZXN0YW1wID0gTWF0aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMCk7CisgICAg
Y29uc3QgbmV3ZXJUaW1lc3RhbXAgPSBvbGRlclRpbWVzdGFtcCArIDEwOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmdW5jdGlvbiBpbnNlcnRTZWNvbmRTdGF0
aXN0aWMoKSB7CisgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyh1
cmwsICIiLCBvbGRlclRpbWVzdGFtcCwgZmFsc2UsIDk5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAw
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBvdmVy
d3JvdGUgb2xkIHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4iKTsKKyAgICAgICAgICAKKyAgICAg
ICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKHVy
bCkpCisgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgb3Zlcndyb3RlIG9sZCB2ZXJ5IHBy
ZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4iKTsKKworICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odXJsKSkKKyAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiSG9zdCBvdmVyd3JvdGUgb2xkIGhhZCB1c2VyIGludGVyYWN0aW9uIHZhbHVlIik7
CisgICAgICAgICAgIAorICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NHcmFu
ZGZhdGhlcmVkKHVybCkpCisgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgb3Zlcndyb3Rl
IG9sZCBncmFuZGZhdGhlcmVkIHZhbHVlLiIpOworICAgICAgICAKKyAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBy
dW5UZXN0UnVubmVyVGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWVy
Z2VTdGF0aXN0aWModXJsLCAiIiwgbmV3ZXJUaW1lc3RhbXAsIHRydWUsIDEwMCwgdHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgMSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJIb3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworCisgICAgICAgICAg
ICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKHVybCkp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBnb3Qgc2V0IGFzIHByZXZhbGVudCBy
ZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbih1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhv
c3QgZ290IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKHVybCkp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBnb3Qgc2V0IGFzIGdyYW5kZmF0aGVy
ZWQuIik7CisKKyAgICAgICAgICAgIGluc2VydFNlY29uZFN0YXRpc3RpYygpOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRVcEFuZFJ1bigpIHsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFi
YXNlKHRydWUpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgcnVuVGVzdFJ1bm5lclRlc3QoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgibm8gdGVzdFJ1bm5l
ciIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAg
ICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1v
dmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1kYXRh
YmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNlNWVlZWRiZjFiNDM1Zjk2YzNhMjBiZjgx
NDAxYWVlNDMzMTk4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0
YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVy
d3JpdGUtZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMWY5M2EwODhjNTY2NzQ1NWZlY2RhNTlhNTJiNjgwNmJiN2NkMTNjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1kYXRhYmFzZS5odG1sCkBAIC0wLDAg
KzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAg
PG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDx0aXRsZT5UZXN0cyB0aGF0IG1lcmdlZCBzdGF0
aXN0aWMgb3ZlcndyaXRlcyBvbGQgc3RhdGlzdGljPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNl
dFRpbWVvdXQoJ3NldFVwQW5kUnVuKCknLCAwKSI+Cis8c2NyaXB0PgorICAgIGlmICh0ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGNvbnN0IHVy
bCA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IHNhbXBsZVRvcEZyYW1lVVJM
ID0gImh0dHA6Ly90b3BGcmFtZURvbWFpbjo4MDAwIjsKKyAgICBjb25zdCBvbGRlclRpbWVzdGFt
cCA9IE1hdGgucm91bmQoKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDApOworICAgIGNvbnN0
IG5ld2VyVGltZXN0YW1wID0gb2xkZXJUaW1lc3RhbXAgKyAxMDsKKyAgICBjb25zdCBtb3N0UmVj
ZW50VUlUb1RyaWdnZXJGaXJzdFBhcnR5SW50ZXJhY3Rpb25Db3VudCA9IG5ld2VyVGltZXN0YW1w
ICsgOTAwMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGZ1
bmN0aW9uIGluc2VydFNlY29uZFN0YXRpc3RpYygpIHsKKyAgICAKKyAgICAgICAgLy8gc2V0IHRo
aXMgcmVzb3VyY2UgYXMgcHJldmFsZW50IHNvIGl0IGlzIGluIHRoZSBzdGF0aXN0aWNzIHN0b3Jl
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHNhbXBs
ZVRvcEZyYW1lVVJMLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgCisgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKHVybCwgc2FtcGxlVG9wRnJh
bWVVUkwsIG5ld2VyVGltZXN0YW1wLCB0cnVlLCBtb3N0UmVjZW50VUlUb1RyaWdnZXJGaXJzdFBh
cnR5SW50ZXJhY3Rpb25Db3VudCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgMSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IG5vdCBz
ZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291
cmNlKHVybCkpCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBub3Qgc2V0
IGFzIHZlcnkgcHJldmFsZW50IHJlc291cmNlLiIpOworCisgICAgICAgICAgICAgICAgICBpZiAo
IXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHVybCkpCisgICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBub3QgbG9nZ2VkIGZvciB1c2VyIGlu
dGVyYWN0aW9uLiIpOworICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgaWYg
KCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQodXJsKSkKKyAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IG5vdCBzZXQgYXMgZ3JhbmRmYXRoZXJlZC4iKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHVybCwgc2FtcGxlVG9wRnJhbWVVUkwp
KQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IHNldCBhcyBzdWJm
cmFtZSB1bmRlciB0b3AgZnJhbWUuIik7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgIH0pOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBydW5UZXN0UnVubmVyVGVzdCgpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWModXJsLCAiIiwg
b2xkZXJUaW1lc3RhbXAsIGZhbHNlLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKHVybCkpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBnb3Qgc2V0IGFz
IHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKHVybCkpCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiSG9zdCBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAg
ICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHVy
bCkpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBnb3QgbG9nZ2VkIGZvciB1c2Vy
IGludGVyYWN0aW9uLiIpOworICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRlc3RSdW5u
ZXIuaXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCh1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkhvc3QgZ290IHNldCBhcyBncmFuZGZhdGhlcmVkLiIpOworCisgICAgICAgICAgICBp
bnNlcnRTZWNvbmRTdGF0aXN0aWMoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc2V0VXBBbmRSdW4oKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKKyAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJ1
blRlc3RSdW5uZXJUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIm5vIHRlc3RSdW5uZXIiKTsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379866</attachid>
            <date>2019-09-30 17:43:05 -0700</date>
            <delta_ts>2019-10-01 12:48:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202372-20190930174304.patch</filename>
            <type>text/plain</type>
            <size>69443</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNDM3M2FhOTljZWRiMzY0
ZjZjMGNjNTVjYzQ1YmUyNGRjM2U0N2EuLmUxOThmYjNmNzJiNTJiYzEzMjYwMTk0NzY5MTcxMTZh
MzNjZDExYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMTktMDktMzAgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlZCByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MgYXJlIG5ldmVyIG1lcmdlZCBpbnRvIHRoZSBTUUxpdGUgRGF0
YWJhc2UgYmFja2VuZCAoMjAyMzcyKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU4NTQ1NDI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBoYXMgYSBsb3Qgb2YgY2hhbmdlcyB0byB0aGUgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBi
ZSBhYmxlIAorICAgICAgICB0byB0ZXN0IHRoZSBtZXJnZVN0YXRpc3RpY3MgZnVuY3Rpb24uIE1l
cmdpbmcgZnVuY3Rpb25hbGl0eSBtaW1pY3MKKyAgICAgICAgdGhhdCBvZiB0aGUgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlIGFuZCB0aGUgbWVyZ2UoKSBmdW5jdGlvbiBpbgorICAg
ICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUpOgorICAgICAgICBBZGRlZCBuZXcgU1FM
aXRlIHF1ZXJpZXMgdGhhdCBhcmUgbmVlZGVkIHRvIG1lcmdlIG5ldyBzdGF0aXN0aWNzLgorCisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVw
YXJlU3RhdGVtZW50cyk6CisgICAgICAgIEFkZGVkIG5ldyBwcmVwYXJlIHN0YXRlbWVudHMgZm9y
IG5ldyBTUUxpdGUgcXVlcmllcy4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4pOgorICAgICAgICBjb25m
aXJtRG9tYWluRG9lc05vdEV4aXN0KCkgaXMgbm93IGJlaW5nIHV0aWxpemVkIHRvIGNoZWNrIGlm
IGEgZG9tYWluCisgICAgICAgIGlzIGFscmVhZHkgaW4gdGhlIHRhYmxlIGFuZCBtdXN0IGJlIGNo
ZWNrZWQgZXZlbiBpZiBub3QgTkVEQlVHLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKToKKyAg
ICAgICAgSW4gb3JkZXIgdG8gcmV1c2UgdGhpcyBjb2RlIGZvciB0aGUgbWVyZ2Ugc3RhdGlzdGlj
cyBmdW5jdGlvbiwgSSBhZGRlZAorICAgICAgICBhIGNoZWNrIGJlZm9yZSBlYWNoIGluc2VydCBj
YWxsIHRvIGVuc3VyZSB0aGUgcmVsYXRpb25zaGlwIGRvZXMgbm90CisgICAgICAgIGFscmVhZHkg
ZXhpc3QgaW4gdGhlIGRhdGFiYXNlLiBUaGlzIHdhcyBub3QgbmVlZGVkIGJlZm9yZSBiZWNhdXNl
IGl0CisgICAgICAgIHdhcyBvbmx5IGNhbGxlZCBvbiBhbiBlbXB0eSBkYXRhYmFzZS4KKworICAg
ICAgICAoV2ViS2l0Ojp3YXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9u
KToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBtaW1pY3MgdGhlIG9uZSBpbiB0aGUgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlCisgICAgICAgIHRvIGRldGVybWluZSB3aGV0aGVyIHRv
IGluY3JlbWVudCB0aGlzIGZpZWxkIGluIHRoZSBkYXRhYmFzZSBiYXNlZCBvbgorICAgICAgICB0
aGUgdXBkYXRlZCBpbnB1dC4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWMpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKToK
KyAgICAgICAgTWVyZ2VzIG5ldyBzdGF0aXN0aWMuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQpOgorICAgICAg
ICBGaXggYSBidWcgdW5jb3ZlcmVkIGJ5IHRoZSBuZXcgdGVzdCBjYXNlcy4KKworICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlVGltZXNB
Y2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgQSBuZXcg
ZnVuY3Rpb24gdGhhdCB1dGlsaXplcyBhIHF1ZXJ5IG5lZWRlZCBmb3IgdGhlIG1lcmdpbmcgb2Yg
dHdvCisgICAgICAgIHN0YXRpc3RpY3MuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZCk6CisgICAg
ICAgIEEgbmV3IGZ1bmN0aW9uIHRoYXQgdXRpbGl6ZXMgYSBxdWVyeSBuZWVkZWQgZm9yIHRoZSBt
ZXJnaW5nIG9mIHR3bworICAgICAgICBzdGF0aXN0aWNzLgorICAgICAgICAKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICBBZGRlZCB0aGUgbWVy
Z2VTdGF0aXN0aWNzIGZ1bmN0aW9uIChwcmV2aW91c2x5IG9ubHkgaW4gdGhlIG1lbW9yeQorICAg
ICAgICBzdG9yZSkgdG8gdGhlIHBhcmVudCBjbGFzcyBub3cgdGhhdCBpdCBpcyB1c2VkIGJ5IGJv
dGggc3RvcmVzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAg
ICAgICAgVGhpcyBmdW5jdGlvbiBub3cgY2FsbHMgbWVyZ2VTdGF0aXN0aWNzIG9uIHRoZSBkYXRh
YmFzZSBzdG9yZSBpZgorICAgICAgICBlbmFibGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAg
ICAgICAgVGhpcyBmdW5jdGlvbiBidWlsZHMgYSB2ZWN0b3IgZnJvbSB0aGUgc2FtcGxlIGRhdGEg
dG8gdGVzdCB0aGUKKyAgICAgICAgbWVyZ2VTdGF0aXN0aWNzKCkgZnVuY3Rpb24gb2YgdGhlIGRh
dGFiYXNlIHN0b3JlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjptZXJn
ZVN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0
aWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3Rp
bmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6
CisgICAgICAgIFRoaXMgY29kZSBpcyBmb3IgdGVzdGluZyB0aGUgbWVyZ2VTdGF0aXN0aWNzKCkg
ZnVuY3Rpb24uCisKIDIwMTktMDktMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIERvd25sb2FkTW9uaXRvciB0ZXN0IHNwZWVkIG11
bHRpcGxpZXIgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHAKaW5kZXggMmMzMDRlNzk0ZjIzNzEzM2ZiNWIyYzk3YWQ4OGVkN2EwM2FhN2FmNy4u
MTI5NjhlZTIyNzc4ZTA0YWRhMDRmMDA2MzllNGUzYzJjYTRmOWM0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC03MCw2
ICs3MCw4IEBAIGNvbnN0ZXhwciBhdXRvIGluc2VydFRvcExldmVsRG9tYWluUXVlcnkgPSAiSU5T
RVJUIElOVE8gVG9wTGV2ZWxEb21haW5zIFZBTFVFUyAoCiBjb25zdGV4cHIgYXV0byBkb21haW5J
REZyb21TdHJpbmdRdWVyeSA9ICJTRUxFQ1QgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMg
V0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwogY29uc3RleHByIGF1dG8gc3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zUXVlcnkgPSAiSU5TRVJUIElOVE8gU3RvcmFnZUFjY2Vz
c1VuZGVyVG9wRnJhbWVEb21haW5zIChkb21haW5JRCwgdG9wTGV2ZWxEb21haW5JRCkgIgogICAg
ICJTRUxFQ1QgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFi
bGVEb21haW4gPT0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZy
YW1lRG9tYWluc0V4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gU3Rv
cmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyAiCisiQU5E
IHRvcExldmVsRG9tYWluSUQgPSAoU0VMRUNUIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5z
IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPykpIl9zOwogY29uc3RleHByIGF1dG8gdG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNUb1F1ZXJ5ID0gIklOU0VSVCBJTlRPIFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG8gKHNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEKSBTRUxFQ1QgPywgZG9tYWluSUQg
RlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPT0gPyJfczsKIGNv
bnN0ZXhwciBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHNRdWVyeSA9ICJTRUxF
Q1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUg
c291cmNlRG9tYWluSUQgPSA/ICIKICAgICAiQU5EIHRvRG9tYWluSUQgPSAoU0VMRUNUIGRvbWFp
bklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPykpIl9z
OwpAQCAtMTAwLDYgKzEwMiw4IEBAIGNvbnN0ZXhwciBhdXRvIHN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzRnJvbUV4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDCiBjb25zdGV4cHIg
YXV0byBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9t
YWlucyBTRVQgaGFkVXNlckludGVyYWN0aW9uID0gPywgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUgPSA/ICIKICAgICAiV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwogY29uc3Rl
eHByIGF1dG8gdXBkYXRlTGFzdFNlZW5RdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNF
VCBsYXN0U2VlbiA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOworY29uc3RleHBy
IGF1dG8gdXBkYXRlRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uUXVlcnkgPSAiVVBEQVRF
IE9ic2VydmVkRG9tYWlucyBTRVQgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlcklu
dGVyYWN0aW9uID0gPyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7Citjb25zdGV4cHIg
YXV0byB1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21h
aW5zIFNFVCBkYXRhUmVjb3Jkc1JlbW92ZWQgPSA/IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0g
PyJfczsKIGNvbnN0ZXhwciBhdXRvIHVwZGF0ZVByZXZhbGVudFJlc291cmNlUXVlcnkgPSAiVVBE
QVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSA/IFdIRVJFIHJlZ2lzdHJhYmxl
RG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIGlzUHJldmFsZW50UmVzb3VyY2VRdWVyeSA9
ICJTRUxFQ1QgaXNQcmV2YWxlbnQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFi
bGVEb21haW4gPSA/Il9zOwogY29uc3RleHByIGF1dG8gdXBkYXRlVmVyeVByZXZhbGVudFJlc291
cmNlUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNWZXJ5UHJldmFsZW50ID0g
PyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CkBAIC0xNjgsNiArMTcyLDcgQEAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlKFdlYlJlc28KICAgICAsIG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1l
bnQobV9kYXRhYmFzZSwgaW5zZXJ0VG9wTGV2ZWxEb21haW5RdWVyeSkKICAgICAsIG1fZG9tYWlu
SURGcm9tU3RyaW5nU3RhdGVtZW50KG1fZGF0YWJhc2UsIGRvbWFpbklERnJvbVN0cmluZ1F1ZXJ5
KQogICAgICwgbV9zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQobV9k
YXRhYmFzZSwgc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zUXVlcnkpCisgICAgLCBt
X3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0c1N0YXRlbWVudChtX2RhdGFi
YXNlLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNFeGlzdHNRdWVyeSkKICAgICAs
IG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyhtX2RhdGFiYXNlLCB0b3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvUXVlcnkpCiAgICAgLCBtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHMo
bV9kYXRhYmFzZSwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0V4aXN0c1F1ZXJ5KQogICAgICwg
bV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20obV9kYXRhYmFzZSwgdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tUXVlcnkpCkBAIC0xODQsNiArMTg5LDggQEAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdl
YlJlc28KICAgICAsIG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tRXhpc3RzKG1fZGF0
YWJhc2UsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUV4aXN0c1F1ZXJ5KQogICAgICwg
bV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50KG1fZGF0YWJhc2UsIG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25RdWVyeSkKICAgICAsIG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgdXBkYXRlTGFzdFNlZW5RdWVyeSkKKyAgICAsIG1fdXBkYXRlVGltZXNBY2Nl
c3NlZER1ZVRvRmlyc3RQYXJ0eUludGVyYWN0aW9uU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0
ZUZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvblF1ZXJ5KQorICAgICwgbV91cGRhdGVEYXRh
UmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdXBkYXRlRGF0YVJlY29yZHNSZW1v
dmVkUXVlcnkpCiAgICAgLCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1fZGF0
YWJhc2UsIHVwZGF0ZVByZXZhbGVudFJlc291cmNlUXVlcnkpCiAgICAgLCBtX2lzUHJldmFsZW50
UmVzb3VyY2VTdGF0ZW1lbnQobV9kYXRhYmFzZSwgaXNQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KQog
ICAgICwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQobV9kYXRhYmFzZSwg
dXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlUXVlcnkpCkBAIC0zMDksNiArMzE2LDcgQEAgYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFyZVN0YXRlbWVudHMo
KQogICAgICAgICB8fCBtX2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZy
YW1lRG9tYWluc1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1f
c3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zRXhpc3RzU3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvRXhpc3RzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV90b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c0Zyb20ucHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMzIyLDYgKzMzMCw4
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0
ZW1lbnRzKCkKICAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20ucHJl
cGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbUV4aXN0cy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdXBkYXRl
TGFzdFNlZW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3Vw
ZGF0ZVRpbWVzQWNjZXNzZWREdWVUb0ZpcnN0UGFydHlJbnRlcmFjdGlvblN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVk
U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9tb3N0UmVjZW50
VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
fHwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LCiAgICAgICAgIHx8IG1faXNQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5wcmVwYXJlKCkg
IT0gU1FMSVRFX09LCkBAIC0zNDYsOSArMzU2LDExIEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKGNvbnN0IFJlc291cmNlTG9h
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSNpZm5kZWYgTkRFQlVHCi0g
ICAgQVNTRVJUKGNvbmZpcm1Eb21haW5Eb2VzTm90RXhpc3QobG9hZFN0YXRpc3RpY3MucmVnaXN0
cmFibGVEb21haW4pKTsKLSNlbmRpZgorICAgIGlmICghY29uZmlybURvbWFpbkRvZXNOb3RFeGlz
dChsb2FkU3RhdGlzdGljcy5yZWdpc3RyYWJsZURvbWFpbikpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbiBjYW4gb25seSBiZSBjYWxsZWQgb24g
ZG9tYWlucyBub3QgaW4gdGhlIGRhdGFiYXNlIik7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgaWYgKG1faW5zZXJ0T2Jz
ZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZFRleHQoMSwgbG9hZFN0YXRpc3RpY3MucmVnaXN0cmFi
bGVEb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX2luc2VydE9ic2Vy
dmVkRG9tYWluU3RhdGVtZW50LmJpbmREb3VibGUoMiwgbG9hZFN0YXRpc3RpY3MubGFzdFNlZW4u
c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKQEAgLTQxNyw3ICs0Mjks
NiBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21h
aW5SZWxhdGlvbnNoaXAoV2ViQ29yZTo6U1FMaQogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWZu
ZGVmIE5ERUJVRwogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29u
ZmlybURvbWFpbkRvZXNOb3RFeGlzdChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBj
b25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNDM5LDcgKzQ1MCw2
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvbmZpcm1Eb21h
aW5Eb2VzTm90RXhpc3QoY29uc3QgUmVnaXN0CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9Ci0j
ZW5kaWYKIAogT3B0aW9uYWw8dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpkb21haW5JRChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAog
ewpAQCAtNDc0LDI2ICs0ODQsNDAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhjb25zdCBSZXNvdXIKICAgICBpZiAo
IXJlZ2lzdHJhYmxlRG9tYWluSUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBmb3IgKGF1
dG8mIHRvcEZyYW1lRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3RvcmFnZUFjY2Vzc1VuZGVyVG9w
RnJhbWVEb21haW5zKQotICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQsIHJlZ2lzdHJhYmxlRG9tYWluSUQu
dmFsdWUoKSwgdG9wRnJhbWVEb21haW4pOworICAgIGZvciAoYXV0byYgdG9wRnJhbWVEb21haW4g
OiBsb2FkU3RhdGlzdGljcy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpIHsKKyAg
ICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV9zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFt
ZURvbWFpbnNFeGlzdHNTdGF0ZW1lbnQsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9w
RnJhbWVEb21haW4pKQorICAgICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3Rv
cmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50LCByZWdpc3RyYWJsZURvbWFp
bklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKTsKKyAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHRv
RG9tYWluIDogbG9hZFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbykKLSAgICAg
ICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbywg
cmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b0RvbWFpbik7CisgICAgZm9yIChhdXRvJiB0
b0RvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pIHsKKyAg
ICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
RXhpc3RzLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvRG9tYWluKSkKKyAgICAgICAg
ICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8s
IHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9Eb21haW4pOworICAgIH0KICAgICAKLSAg
ICBmb3IgKGF1dG8mIGZyb21Eb21haW4gOiBsb2FkU3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c0Zyb20pCi0gICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzRnJvbSwgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCBmcm9tRG9t
YWluKTsKKyAgICBmb3IgKGF1dG8mIGZyb21Eb21haW4gOiBsb2FkU3RhdGlzdGljcy50b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb20pIHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMo
bV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21FeGlzdHMsIHJlZ2lzdHJhYmxlRG9tYWluSUQu
dmFsdWUoKSwgZnJvbURvbWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNo
aXAobV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFs
dWUoKSwgZnJvbURvbWFpbik7CisgICAgfQogICAgIAotICAgIGZvciAoYXV0byYgdG9wRnJhbWVE
b21haW4gOiBsb2FkU3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKQotICAg
ICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21h
aW5zLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKTsKKyAgICBm
b3IgKGF1dG8mIHRvcEZyYW1lRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWlucykgeworICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyhtX3N1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgp
LCB0b3BGcmFtZURvbWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAo
bV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVl
KCksIHRvcEZyYW1lRG9tYWluKTsKKyAgICB9CiAgICAgCi0gICAgZm9yIChhdXRvJiB0b3BGcmFt
ZURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMp
Ci0gICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4p
OworICAgIGZvciAoYXV0byYgdG9wRnJhbWVEb21haW4gOiBsb2FkU3RhdGlzdGljcy5zdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKSB7CisgICAgICAgIGlmICghcmVsYXRpb25zaGlwRXhp
c3RzKG1fc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLCByZWdpc3RyYWJsZURv
bWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKSkKKyAgICAgICAgICAgIGluc2VydERvbWFp
blJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMsIHJlZ2lzdHJh
YmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pOworICAgIH0KICAgICAKLSAgICBm
b3IgKGF1dG8mIHRvRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbykKLSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUbywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b0RvbWFpbik7
CisgICAgZm9yIChhdXRvJiB0b0RvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8pIHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVl
KCksIHRvRG9tYWluKSkKKyAgICAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwg
dG9Eb21haW4pOworICAgIH0KICAgICAKLSAgICBmb3IgKGF1dG8mIGZyb21Eb21haW4gOiBsb2Fk
U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pCi0gICAgICAgIGluc2Vy
dERvbWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSwgcmVn
aXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCBmcm9tRG9tYWluKTsKKyAgICBmb3IgKGF1dG8mIGZy
b21Eb21haW4gOiBsb2FkU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20p
IHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c0Zyb21FeGlzdHMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgZnJvbURvbWFp
bikpCisgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c0Zyb20sIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgZnJvbURvbWFp
bik7CisgICAgfQogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojpwb3B1bGF0ZUZyb21NZW1vcnlTdG9yZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUmIG1lbW9yeVN0b3JlKQpAQCAtNTEzLDYgKzUzNyw4OCBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwb3B1bGF0ZUZyb21NZW1vcnlTdG9yZShjb25z
dCBSZXNvdXJjZQogICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKHN0YXRpc3RpYy52
YWx1ZSk7CiB9CiAKK3N0YXRpYyBib29sIHdhc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2Vy
SW50ZXJhY3Rpb24oYm9vbCBjdXJyZW50SGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgY3VycmVu
dE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIG90aGVy
KQoreworICAgIGlmICghY3VycmVudEhhZFVzZXJJbnRlcmFjdGlvbiAmJiAhb3RoZXIuaGFkVXNl
ckludGVyYWN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25UaW1lID0gc3RkOjptYXgoV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KGN1cnJlbnRNb3N0UmVjZW50VXNlckludGVyYWN0aW9uKSwgb3RoZXIubW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUpOworCisgICAgcmV0dXJuIG90aGVyLmxhc3RTZWVuIDw9IG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25UaW1lICsgMjRfaDsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiBjdXJy
ZW50LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBvdGhlcikKK3sKKyAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8gY3VycmVudFJlZ2lzdHJhYmxlRG9tYWluID0gY3Vy
cmVudC5nZXRDb2x1bW5UZXh0KDEpOworICAgIGF1dG8gY3VycmVudExhc3RTZWVuID0gY3VycmVu
dC5nZXRDb2x1bW5Eb3VibGUoMik7CisgICAgYm9vbCBjdXJyZW50SGFkVXNlckludGVyYWN0aW9u
ID0gY3VycmVudC5nZXRDb2x1bW5JbnQoMyk7CisgICAgYXV0byBjdXJyZW50TW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvbiA9IGN1cnJlbnQuZ2V0Q29sdW1uRG91YmxlKDQpOworICAgIGJvb2wgY3Vy
cmVudEdyYW5kZmF0aGVyZWQgPSBjdXJyZW50LmdldENvbHVtbkludCg1KTsKKyAgICBib29sIGN1
cnJlbnRJc1ByZXZhbGVudCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50KDYpOworICAgIGJvb2wgY3Vy
cmVudElzVmVyeVByZXZhbGVudCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50KDcpOworICAgIHVuc2ln
bmVkIGN1cnJlbnREYXRhUmVjb3Jkc1JlbW92ZWQgPSBjdXJyZW50LmdldENvbHVtbkludCg4KTsK
KyAgICB1bnNpZ25lZCBjdXJyZW50VGltZXNBY2Nlc3NlZER1ZVRvRmlyc3RQYXJ0eUludGVyYWN0
aW9uID0gY3VycmVudC5nZXRDb2x1bW5JbnQoOSk7CisKKyAgICBBU1NFUlQoY3VycmVudFJlZ2lz
dHJhYmxlRG9tYWluID09IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKTsKKworICAg
IGlmIChXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoY3VycmVudExhc3RTZWVuKSA8IG90aGVyLmxh
c3RTZWVuKQorICAgICAgICB1cGRhdGVMYXN0U2VlbihvdGhlci5yZWdpc3RyYWJsZURvbWFpbiwg
b3RoZXIubGFzdFNlZW4pOworCisgICAgaWYgKCFvdGhlci5oYWRVc2VySW50ZXJhY3Rpb24pIHsK
KyAgICAgICAgLy8gSWYgbW9zdCByZWNlbnQgdXNlciBpbnRlcmFjdGlvbiB0aW1lIGhhcyBiZWVu
IHJlc2V0IGRvIHNvIGhlcmUgdG9vLgorICAgICAgICAvLyBFbHNlLCBkbyBub3RoaW5nLgorICAg
ICAgICBpZiAoIW90aGVyLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKQorICAgICAgICAg
ICAgc2V0VXNlckludGVyYWN0aW9uKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLCBmYWxzZSwgeyB9
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2V0VXNlckludGVyYWN0aW9uKG90aGVyLnJlZ2lzdHJh
YmxlRG9tYWluLCB0cnVlLCBzdGQ6Om1heChXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoY3VycmVu
dE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24pLCBvdGhlci5tb3N0UmVjZW50VXNlckludGVyYWN0
aW9uVGltZSkpOworCisgICAgaWYgKG90aGVyLmdyYW5kZmF0aGVyZWQgfHwgY3VycmVudEdyYW5k
ZmF0aGVyZWQpCisgICAgICAgIHNldEdyYW5kZmF0aGVyZWQob3RoZXIucmVnaXN0cmFibGVEb21h
aW4sIHRydWUpOworICAgIGlmIChvdGhlci5pc1ByZXZhbGVudFJlc291cmNlIHx8IGN1cnJlbnRJ
c1ByZXZhbGVudCkKKyAgICAgICAgc2V0UHJldmFsZW50UmVzb3VyY2Uob3RoZXIucmVnaXN0cmFi
bGVEb21haW4pOworICAgIGlmIChvdGhlci5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSB8fCBjdXJy
ZW50SXNWZXJ5UHJldmFsZW50KQorICAgICAgICBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2Uob3Ro
ZXIucmVnaXN0cmFibGVEb21haW4pOworICAgIGlmICh3YXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1
ZVRvVXNlckludGVyYWN0aW9uKGN1cnJlbnRIYWRVc2VySW50ZXJhY3Rpb24sIGN1cnJlbnRNb3N0
UmVjZW50VXNlckludGVyYWN0aW9uLCBvdGhlcikpCisgICAgICAgIHVwZGF0ZVRpbWVzQWNjZXNz
ZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbihvdGhlci5yZWdpc3RyYWJsZURvbWFp
biwgY3VycmVudFRpbWVzQWNjZXNzZWREdWVUb0ZpcnN0UGFydHlJbnRlcmFjdGlvbiArIDEpOwor
ICAgIGlmIChvdGhlci5kYXRhUmVjb3Jkc1JlbW92ZWQgPiBjdXJyZW50RGF0YVJlY29yZHNSZW1v
dmVkKQorICAgICAgICB1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQob3RoZXIucmVnaXN0cmFibGVE
b21haW4sIG90aGVyLmRhdGFSZWNvcmRzUmVtb3ZlZCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHN0YXRpc3RpYykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwor
ICAgIFNRTGl0ZVN0YXRlbWVudCBmZXRjaE9sZFN0YXRpc3RpY0RhdGEobV9kYXRhYmFzZSwgIlNF
TEVDVCAqIEZST00gT2JzZXJ2ZWREb21haW5zIHdoZXJlIHJlZ2lzdHJhYmxlRG9tYWluID0gPyIp
OworICAgIGlmIChmZXRjaE9sZFN0YXRpc3RpY0RhdGEucHJlcGFyZSgpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBmZXRjaE9sZFN0YXRpc3RpY0RhdGEuYmluZFRleHQoMSwgc3RhdGlzdGljLnJl
Z2lzdHJhYmxlRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgZmV0Y2hP
bGRTdGF0aXN0aWNEYXRhLnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpYy4gU3RhdGVtZW50IGZhaWxlZCB0byBi
aW5kIG9yIGRvbWFpbiB3YXMgbm90IGZvdW5kLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWVyZ2UoZmV0Y2hPbGRTdGF0
aXN0aWNEYXRhLCBzdGF0aXN0aWMpOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+JiYgc3RhdGlzdGljcykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwor
ICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogc3RhdGlzdGljcykgeworICAgICAgICBpZiAoY29u
ZmlybURvbWFpbkRvZXNOb3RFeGlzdChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4pKQorICAg
ICAgICAgICAgaW5zZXJ0T2JzZXJ2ZWREb21haW4oc3RhdGlzdGljKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbWVyZ2VTdGF0aXN0aWMoc3RhdGlzdGljKTsKKyAgICB9CisKKyAgICAvLyBN
YWtlIGEgc2VwYXJhdGUgcGFzcyBmb3IgaW50ZXItZG9tYWluIHJlbGF0aW9uc2hpcHMgc28gd2UK
KyAgICAvLyBjYW4gcmVmZXIgdG8gdGhlIE9ic2VydmVkRG9tYWluIHRhYmxlIGVudHJpZXMKKyAg
ICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IHN0YXRpc3RpY3MpCisgICAgICAgIGluc2VydERvbWFp
blJlbGF0aW9uc2hpcHMoc3RhdGlzdGljKTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTExOTQsNyArMTMwMCw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQo
Y29uc3QgUmVnaXN0cmFibGVEb21hCiAgICAgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVn
aXN0cmFibGVEb21haW4oZG9tYWluKTsKICAgICAKICAgICBpZiAobV91cGRhdGVHcmFuZGZhdGhl
cmVkU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9PSwotICAgICAgICB8fCBt
X3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50
LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1f
dXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQgZmFpbGVk
IHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNjYyLDYg
KzE3NjgsMzggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0
VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHIKICAgICBzZXRQcmV2YWxlbnRSZXNv
dXJjZShkb21haW4sIFJlc291cmNlTG9hZFByZXZhbGVuY2U6OlZlcnlIaWdoKTsKIH0KIAordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlVGltZXNBY2Nlc3Nl
ZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4sIGludCB2YWx1ZSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KworICAgIGlmIChtX3VwZGF0ZVRpbWVzQWNjZXNzZWREdWVUb0ZpcnN0UGFydHlJbnRlcmFjdGlv
blN0YXRlbWVudC5iaW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91
cGRhdGVUaW1lc0FjY2Vzc2VkRHVlVG9GaXJzdFBhcnR5SW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmlu
ZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91cGRh
dGVUaW1lc0FjY2Vzc2VkRHVlVG9GaXJzdFBhcnR5SW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1
cGRhdGVUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24gZmFpbGVk
IHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX3VwZGF0ZVRpbWVzQWNjZXNz
ZWREdWVUb0ZpcnN0UGFydHlJbnRlcmFjdGlvblN0YXRlbWVudC5yZXNldCgpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZURhdGFSZWNvcmRz
UmVtb3ZlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBpbnQgdmFsdWUpCit7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAobV91cGRhdGVEYXRhUmVj
b3Jkc1JlbW92ZWRTdGF0ZW1lbnQuYmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRv
bWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlRGF0YVJlY29y
ZHNSZW1vdmVkU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkIGZhaWxlZCB0
byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVEYXRhUmVjb3Jkc1Jl
bW92ZWRTdGF0ZW1lbnQucmVzZXQoKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCBy
ZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5oCmluZGV4IGYxZDU2NTVkZWViY2RiMDQ3Y2RkOTZkMmU5MzU2MzRjZWFjMDFkM2EuLjdm
NjEyMTJiZTU2NDY4ZWFhYWIxNTJjMzgxNjc2MDMyMDI0NjJjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC01NCw3ICs1NCw3
IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9j
YWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQQUw6OlNlc3Npb25J
RCk7CiAKICAgICB2b2lkIHBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSYpOwotCisgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBib29sIGlzRW1wdHko
KSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTA1LDE2ICsxMDUsMTggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGljKFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmKTsKKyAgICB2b2lkIG1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYsIFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICB2b2lkIGNsZWFyRGF0YWJhc2VDb250ZW50cygpOwog
ICAgIGJvb2wgaW5zZXJ0T2JzZXJ2ZWREb21haW4oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYpOwogICAgIHZvaWQgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhjb25zdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAoV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50JiwgdW5zaWduZWQgZG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbik7CiAgICAgYm9vbCByZWxhdGlvbnNoaXBFeGlzdHMoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50JiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzZWNvbmREb21haW4pIGNvbnN0OwogICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBkb21haW5JRChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0Owot
I2lmbmRlZiBOREVCVUcKICAgICBib29sIGNvbmZpcm1Eb21haW5Eb2VzTm90RXhpc3QoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKLSNlbmRpZgogICAgIHZvaWQgdXBkYXRlTGFzdFNl
ZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxsVGltZSk7CisgICAgdm9pZCB1cGRhdGVU
aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBpbnQpOworICAgIHZvaWQgdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgaW50KTsKICAgICB2b2lkIHNldFVzZXJJbnRlcmFjdGlv
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBXYWxs
VGltZSk7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERl
bGV0ZUNvb2tpZXNGb3IoKSBjb25zdDsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRv
bWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoKSBjb25zdDsKQEAgLTE3NSw2ICsxNzcsNyBA
QCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2luc2VydFRvcExldmVs
RG9tYWluU3RhdGVtZW50OwogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1f
ZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50OwogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dCBtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudDsKKyAgICBXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNF
eGlzdHNTdGF0ZW1lbnQ7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUbzsKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBt
X3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHM7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50IG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tOwpAQCAtMTkxLDYgKzE5NCw4IEBA
IHByaXZhdGU6CiAgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21FeGlzdHM7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKICAgICBXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3VwZGF0ZVRpbWVzQWNjZXNzZWREdWVUb0ZpcnN0UGFy
dHlJbnRlcmFjdGlvblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudDsKICAgICBXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKICAgICBt
dXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQ7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlVmVyeVByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5oCmluZGV4IDg3OWUxYWZjZmI4NjIyOTc2NDZiNTAwODA2ZmZjNGY5YTBh
YTAzNDcuLmQzYzY4NTFlYmQ1MDgzNDY0YjBmYzFmZmNkZWVmMmZmNDZhZTc2ODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTYxLDcg
KzYxLDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpLZXllZEVuY29k
ZXI+IGNyZWF0ZUVuY29kZXJGcm9tRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VXaXRoRGF0
YUZyb21EZWNvZGVyKFdlYkNvcmU6OktleWVkRGVjb2RlciYpOwogCi0gICAgdm9pZCBtZXJnZVN0
YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOworICAgIHZvaWQgbWVy
Z2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYpPiYpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVDb29raWVC
bG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDZmNjFlZDM0M2RlMjY2YWEzNWY5
ZWMwZGE3NDIxMTAxOTM2MmFmZGEuLjk5YTY3MTA2NjY5NmY0ZmQyODZmY2Q3ZDIwNzViNGU3NjU5
NTNmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTEw
OCw2ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsYXNzaWZ5UHJldmFsZW50
UmVzb3VyY2VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpID0gMDsKICAgICB2b2lkIHJlbW92ZUFsbFN0
b3JhZ2VBY2Nlc3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMmJiZWRjYjk2MzdmZTM2
MWZjMzA4ZWNlNDY5Njk5NzQ0MTlmYjY4Yy4uMjAzMmQ3MzI1ZDVlM2U1YjRmZmM5NWVjMmI4Njkx
YTE3MjkwZTYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKQEAgLTI2NCwxOSArMjY0LDE3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyCiAg
ICAgLy8gY29taW5nIGZyb20gSVBDLiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIG9ubHkgY29udGFp
bnMgc3RyaW5ncyB3aGljaCBhcmUgc2FmZSB0byBtb3ZlIHRvIG90aGVyIHRocmVhZHMgYXMgbG9u
ZwogICAgIC8vIGFzIG5vYm9keSBvbiB0aGlzIHRocmVhZCBob2xkcyBhIHJlZmVyZW5jZSB0byB0
aG9zZSBzdHJpbmdzLgogICAgIHBvc3RUYXNrKFt0aGlzLCBzdGF0aXN0aWNzID0gV1RGTW92ZShz
dGF0aXN0aWNzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSB8
fCAhaXM8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3Rv
cmUpKQorICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGF1dG8mIG1lbW9yeVN0b3JlID0gZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpOwotICAgIAotICAgICAgICBt
ZW1vcnlTdG9yZS5tZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0aWNzKSk7CisgICAgICAg
IG1fc3RhdGlzdGljc1N0b3JlLT5tZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0aWNzKSk7
CiAKICAgICAgICAgLy8gV2UgY2FuIGNhbmNlbCBhbnkgcGVuZGluZyByZXF1ZXN0IHRvIHByb2Nl
c3Mgc3RhdGlzdGljcyBzaW5jZSB3ZSdyZSBkb2luZyBpdCBzeW5jaHJvbm91c2x5IGJlbG93Lgot
ICAgICAgICBtZW1vcnlTdG9yZS5jYW5jZWxQZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1
ZXN0KCk7CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jYW5jZWxQZW5kaW5nU3RhdGlzdGlj
c1Byb2Nlc3NpbmdSZXF1ZXN0KCk7CiAKICAgICAgICAgLy8gRmlyZSBiZWZvcmUgcHJvY2Vzc2lu
ZyBzdGF0aXN0aWNzIHRvIHByb3BhZ2F0ZSB1c2VyIGludGVyYWN0aW9uIGFzIGZhc3QgYXMgcG9z
c2libGUgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICAgICAgbWVtb3J5U3RvcmUudXBkYXRl
Q29va2llQmxvY2tpbmcoW10oKSB7IH0pOwotICAgICAgICBtZW1vcnlTdG9yZS5wcm9jZXNzU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT51cGRh
dGVDb29raWVCbG9ja2luZyhbXSgpIHsgfSk7CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5w
cm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAgICAgfSk7CiB9CiAKQEAgLTU4Myw2
ICs1ODEsMzUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldExhc3RT
ZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4KICAgICAgICAgcG9zdFRhc2tSZXBs
eShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vj
b25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9v
bCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRz
UmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBwb3N0VGFzayhbdGhpcywg
ZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1l
RG9tYWluLmlzb2xhdGVkQ29weSgpLCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1Zl
cnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fc3RhdGlz
dGljc1N0b3JlKSB7CisgICAgICAgICAgICBhdXRvIHN0YXRpc3RpYyA9IFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoZG9tYWluKTsKKyAgICAgICAgICAgIHN0YXRpc3RpYy5sYXN0U2VlbiA9IFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0U2Vlbi5zZWNvbmRzKCkpOworICAgICAgICAgICAgc3Rh
dGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiA9IGhhZFVzZXJJbnRlcmFjdGlvbjsKKyAgICAgICAg
ICAgIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpm
cm9tUmF3U2Vjb25kcyhtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLnNlY29uZHMoKSk7CisgICAg
ICAgICAgICBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCA9IGlzR3JhbmRmYXRoZXJlZDsKKyAgICAg
ICAgICAgIHN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlID0gaXNQcmV2YWxlbnQ7CisgICAg
ICAgICAgICBzdGF0aXN0aWMuaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UgPSBpc1ZlcnlQcmV2YWxl
bnQ7CisgICAgICAgICAgICBzdGF0aXN0aWMuZGF0YVJlY29yZHNSZW1vdmVkID0gZGF0YVJlY29y
ZHNSZW1vdmVkOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRvcEZyYW1lRG9tYWlu
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
IHRvcEZyYW1lRG9tYWluczsKKyAgICAgICAgICAgICAgICB0b3BGcmFtZURvbWFpbnMuYWRkKHRv
cEZyYW1lRG9tYWluKTsKKyAgICAgICAgICAgICAgICBzdGF0aXN0aWMuc3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWlucyA9IFdURk1vdmUodG9wRnJhbWVEb21haW5zKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRpc3RpY3M7
CisgICAgICAgICAgICBzdGF0aXN0aWNzLmFwcGVuZChXVEZNb3ZlKHN0YXRpc3RpYykpOworICAg
ICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPm1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKHN0YXRp
c3RpY3MpKTsKKyAgICAgICAgfQorICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KICAgICAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXgg
MmM3ZDM3OGIwNDNjOTVlMTY1NTg3ZTY2YTVmNzQzZTBmODkyNjZjMS4uOWFmMTJmYmYzNTRmYjFh
NDFkNzExNDdlZjNkMGNhYTNiOWEzNDZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTI5LDYgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBt
ZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYsIFNlY29uZHMsIGJvb2wsIFNlY29uZHMsIGJvb2wsIGJvb2wsIGJvb2ws
IHVuc2lnbmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IGY1MmY0MGZiZGNkNmNmOTM5M2JlOTA2ZDRiMGMyNWVkMDE0Y2MxZjcuLjM3OGQ5
ZDI0NGE0ZGE5MWU5YTQ1NDYxMjc4YTVmNWE3MDNkZTUyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC05NzQsNiArOTc0LDE5IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21hCiAgICAgfQogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNz
OjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBT
ZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBi
b29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29y
ZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5tZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoZG9tYWluLCB0
b3BGcmFtZURvbWFpbiwgbGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFs
ZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCA5MGNmNzMyZjcyYjM5MThmNjZiY2QzNWQyMDQ3MjkyYTAzNjAxM2Q3Li45NDdkYzRlNDQwZWY1
Yjc3MDkzMmY3MWMzOGEyM2JjM2JlZTI3NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNDIsNiArMjQyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9u
SUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRH
cmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgU2Vjb25kcywg
Ym9vbCwgU2Vjb25kcywgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wsIGJvb2wsIHVuc2lnbmVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChQQUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYTc3NjYzZTdjZjY0MTM4YjY3OTE4MGIxYzlh
YzY0YjQ3Mzg5YzcxYi4uMWVmOGZiYzBkYWMxNGYzNmI3N2ZjNzU5MWUyNDRiOWUzMjU5MTg3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC05NCw2ICs5NCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFp
bikgLT4gKGJvb2wgaXNWZXJ5UHJldmFsZW50KSBBc3luYwogICAgIFNldEFnZUNhcEZvckNsaWVu
dFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4g
c2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBTZWNvbmRz
IHNlY29uZHMpIC0+ICgpIEFzeW5jCisgICAgTWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VE
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBTZWNvbmRz
IGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9v
bCBpc1ZlcnlQcmV2YWxlbnQsIHVpbnQ2NF90IGRhdGFSZWNvcmRzUmVtb3ZlZCkgLT4gKCkgQXN5
bmMKICAgICBTZXRQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAg
IFNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5j
CiAgICAgSGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+IChib29sIGhhZFVzZXJJbnRl
cmFjdGlvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDk2MGY5ZmIwZjIyYjllYzgwOWU2NTFi
ZWI5ZTVhNzYzMGM2ZWQ5NTQuLjIxNGIxMDhkMjQ0NjdiNmVmYTY3ZjY5NDM0Yzc4NDI2ZjNkMzJl
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtMTE5LDYgKzExOSwxNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmLAogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c01lcmdlU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFzdFNlZW4s
IGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJl
dmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0Z1bmN0aW9uIGNvbXBsZXRpb25I
YW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbCh0b3BGcmFtZURvbWFpbiktPnN0cmluZygpKSwgU2Vjb25kcyB7IGxhc3RTZWVuIH0s
IGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyB7IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24g
fSwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVj
b3Jkc1JlbW92ZWQsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhh
bmRsZXIoY29udGV4dCk7CisjZW5kaWYKK30KKwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgKaW5kZXggY2NmNTkxMzg5ZmI5MTVmMjM1MTZkMzA0OGM5ZTI3ZGNjMTk3ZTMyNS4uZjJhMTc4
Mjk2ZWE3OWViNGVmNTU3YWIwZTA3OGI5YWQ2ZWE5YWE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTQ5LDYg
KzQ5LDggQEAgV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW8KIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRl
YnVnTW9kZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBo
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVidWdNb2Rl
RnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOyAgICAKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NMYXN0U2VlbkZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRl
eHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzTGFzdFNlZW5GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7Cit0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbiwgZG91YmxlIGxh
c3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlz
VmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNGdW5jdGlvbiBjb21w
bGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdL
X0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0
LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZv
aWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlRnVu
Y3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzMWE3MjU3
YzEwMWExMDA1NzEyOGI2ODc1YmQ0M2I3MDZjMzRlODUzLi5jZTY1YzYzOTg0ZDI4MmEyYWExY2Uz
NWM1Mzc4NTkyZGQ2NGQxZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUzNSw2ICs1MzUsMTYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmwKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTZXRMYXN0U2VlbihzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBs
YXN0U2VlbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBo
YWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9v
bCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50
LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Ok1lcmdlU3RhdGlz
dGljRm9yVGVzdGluZyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbiwg
bGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwg
aXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jk
c1JlbW92ZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2Vu
ZE1lc3NhZ2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA2NDcxM2FiMWEwY2ZkMjZkZjJmODYxZGIxYTRh
ZTdhZjM4NmRiOTZmLi5hMzVhZTlkNjYwZWI3ZGMzMTE4N2MwYzcxZTk4MzNjZmQ4ZGFjZGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1VzZXJJ
bnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFNlY29uZHMsIGJvb2ws
IFNlY29uZHMsIGJvb2wsIGJvb2wsIGJvb2wsIHVuc2lnbmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaXNHcmFuZGZhdGhl
cmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA2
OTM1NWQ3OTdjMjVjOGJjMjAxOTlmNzdhZDA4NjU0MDA1MDk2NGU0Li42ZDU1ODQ1MmZhNDllMWEx
NWM1YjIzNTFjMDQxOTZlYjExNTNlZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTUzMyw2ICsx
NTMzLDIxIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0TGFzdFNlZW4oY29uc3QgVVJMJiB1
cmwsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhCiAgICAgfQogfQogCit2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCAsIGNv
bnN0IFVSTCYgdG9wRnJhbWVVcmwsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVy
YWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZh
dGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQg
ZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKHVybC5wcm90b2NvbElzQWJvdXQoKSB8fCB1cmwuaXNFbXB0
eSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6
Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9
IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgcHJvY2Vzcy0+bWVy
Z2VTdGF0aXN0aWNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB7IHVybCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVXJsIH0s
IGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24s
IGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29y
ZHNSZW1vdmVkLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorCiB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1
dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDhhNWZlYmE4M2I3ZGEwZGNj
NzRiNzhjNWEwMTkyYzBmN2Y1MmVjN2YuLmI0YWFjZDFlYTQwNmFjZDhhZDBiM2NjNTI1ZmUxY2Vi
NTVkMGM1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE2Miw2ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRVc2VJVFBEYXRhYmFzZShib29sKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5n
VGltZShTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
TGFzdFNlZW4oY29uc3QgVVJMJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmLCBjb25zdCBV
UkwmIHRvcEZyYW1lVXJsLCBTZWNvbmRzLCBib29sLCBTZWNvbmRzLCBib29sLCBib29sLCBib29s
LCB1bnNpZ25lZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldE5v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZXN0KGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQ
cnVuZUVudHJpZXNEb3duVG8oc2l6ZV90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE0YjZi
NjRkMzAxY2Y2NzM4YzI3NjQ5OGNhYTA2YjY4YmIyNTdlMmUuLjBkMzlmM2UwZWRhZWE5YTRjYWM2
YTZlNDA2OWEwZjI2MmY4MDhmZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxOS0wOS0zMCAgS2F0ZSBDaGVuZXkg
IDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGVkIHJlc291cmNl
IGxvYWQgc3RhdGlzdGljcyBhcmUgbmV2ZXIgbWVyZ2VkIGludG8gdGhlIFNRTGl0ZSBEYXRhYmFz
ZSBiYWNrZW5kICgyMDIzNzIpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyMzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTg1NDU0Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0
aW5nIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIG1lcmdlU3RhdGlzdGljcygpIGZ1bmN0aW9uIG9mIHRo
ZSAKKyAgICAgICAgU1FMaXRlIGJhY2tlbmQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyk6CisgICAgICAg
IChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0TWVyZ2VTdGF0aXN0aWNDYWxs
YmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkTWVyZ2VTdGF0aXN0aWMpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKwogMjAxOS0wOS0z
MCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW3Jlc3Vs
dHMud2Via2l0Lm9yZyBUaW1lbGluZV0gTmV3IGF4aXMgc3R5bGUKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsCmluZGV4IGEwMWQ0ZmI1MzkwZDRhZDRmYzU2ZjZkZjg2NzM2OWJmOWM2NmE2OTMuLjQy
YWFkNTRlMzExM2EzODNmNzM0OTE3NzQxNTIxN2NlZDk5MGQ0YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbApAQCAtMjk4LDYgKzI5OCw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNvbXBs
ZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZv
ckRlYnVnTW9kZShET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7
CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTGFzdFNlZW4oRE9NU3RyaW5nIGhvc3ROYW1lLCBkb3Vi
bGUgc2Vjb25kcywgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNldFN0YXRp
c3RpY3NNZXJnZVN0YXRpc3RpYyhET01TdHJpbmcgaG9zdE5hbWUsIERPTVN0cmluZyB0b3BGcmFt
ZURvbWFpbiwgZG91YmxlIGxhc3RTZWVuLCBib29sZWFuIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91
YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2xlYW4gaXNHcmFuZGZhdGhlcmVkLCBi
b29sZWFuIGlzUHJldmFsZW50LCBib29sZWFuIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgbG9u
ZyBkYXRhUmVjb3Jkc1JlbW92ZWQsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29s
ZWFuIHZhbHVlLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc2V0U3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShET01TdHJpbmcgaG9zdE5hbWUsIGJvb2xlYW4gdmFs
dWUsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgYm9vbGVhbiBpc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZShET01TdHJpbmcgaG9zdE5hbWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRl
eCA5YzEwYjQwODRkOWJmM2Q5ZmZkNGJkMDdhNWViNWZmNDNlY2Q5NGQ4Li4wMWI3NTYyZDFjMGM4
ZDEyMzY5MzQwNjcxZmMwMmUzZDdlNmFlMTkzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzU2LDYg
KzM1NiwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICBtX3Rlc3RSdW5uZXIt
PnN0YXRpc3RpY3NDYWxsRGlkU2V0TGFzdFNlZW5DYWxsYmFjaygpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiQ2FsbERpZE1lcmdlU3RhdGlzdGljIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVy
LT5zdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdlU3RhdGlzdGljQ2FsbGJhY2soKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiQ2FsbERpZFNldFByZXZhbGVudFJlc291cmNlIikpIHsKICAgICAgICAgbV90
ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldFByZXZhbGVudFJlc291cmNlQ2FsbGJhY2so
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCmluZGV4IDgyZGI2NzQyOTk5Yzc3ZGJiY2ZjMzUyNDY1NDA2NTc0YmIzNjM1MTcu
LjAxMTA0YWNmODRiYWIxMjdlNTE3M2QzNzkzMmU0Mjk5YWZhM2MxNTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAt
NzMyLDYgKzczMiw3IEBAIGVudW0gewogICAgIFNldFN0YXRpc3RpY3NEZWJ1Z01vZGVDYWxsYmFj
a0lELAogICAgIFNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZUNhbGxi
YWNrSUQsCiAgICAgU2V0U3RhdGlzdGljc0xhc3RTZWVuQ2FsbGJhY2tJRCwKKyAgICBTZXRTdGF0
aXN0aWNzTWVyZ2VTdGF0aXN0aWNDYWxsYmFja0lELAogICAgIFNldFN0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZUNhbGxiYWNrSUQsCiAgICAgU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZUNhbGxiYWNrSUQsCiAgICAgU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkNh
bGxiYWNrSUQsCkBAIC0xNDUzLDYgKzE0NTQsNTcgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0
aWNzQ2FsbERpZFNldExhc3RTZWVuQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJh
Y2soU2V0U3RhdGlzdGljc0xhc3RTZWVuQ2FsbGJhY2tJRCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5l
cjo6c2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0
cmluZ1JlZiB0b3BGcmFtZURvbWFpbiwgZG91YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZh
dGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQg
ZGF0YVJlY29yZHNSZW1vdmVkLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKFNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0NhbGxi
YWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVl
czsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkhvc3ROYW1lIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpKSk7CisgICAgCisgICAga2V5cy5hcHBlbmQoYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVG9wRnJhbWVEb21haW4iKSkpOworICAg
IHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyh0b3BGcmFt
ZURvbWFpbikpKTsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkxhc3RTZWVuIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tE
b3VibGVDcmVhdGUobGFzdFNlZW4pKSk7CisKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIYWRVc2VySW50ZXJhY3Rpb24iKSkpOworICAgIHZh
bHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaGFkVXNlckludGVyYWN0aW9uKSkp
OworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9w
dFdLKFdLRG91YmxlQ3JlYXRlKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24pKSk7CisKKyAgICBr
ZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc0dyYW5k
ZmF0aGVyZWQiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
aXNHcmFuZGZhdGhlcmVkKSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNQcmV2YWxlbnQiKSkpOworICAgIHZhbHVlcy5hcHBlbmQo
YWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNQcmV2YWxlbnQpKSk7CisKKyAgICBrZXlzLmFwcGVu
ZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1ZlcnlQcmV2YWxlbnQi
KSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNWZXJ5UHJl
dmFsZW50KSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiRGF0YVJlY29yZHNSZW1vdmVkIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFk
b3B0V0soV0tVSW50NjRDcmVhdGUoZGF0YVJlY29yZHNSZW1vdmVkKSkpOworCisgICAgVmVjdG9y
PFdLU3RyaW5nUmVmPiByYXdLZXlzKGtleXMuc2l6ZSgpKTsKKyAgICBWZWN0b3I8V0tUeXBlUmVm
PiByYXdWYWx1ZXModmFsdWVzLnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7
CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljIikpOworICAgIFdL
UmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLRGljdGlv
bmFyeUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwgcmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5zaXpl
KCkpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0
KCksIG51bGxwdHIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0
TWVyZ2VTdGF0aXN0aWNDYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhT
ZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNDYWxsYmFja0lEKTsKK30KKwogdm9pZCBUZXN0UnVu
bmVyOjpzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUs
IGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY2FjaGVU
ZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlQ2FsbGJhY2tJ
RCwgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA0OWU1ZmYwODc2MDY3OWY4ZjczYjU1Y2Vk
OWZmYzc1NTBhMWQ2YmRmLi5mMTcwMDEyOTgzMWI2Zjk0NzA3NjJmMDMwZmVjZDcwMWM0ZDNiYTNi
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaApAQCAtMzk2LDYgKzM5Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3ND
YWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGVDYWxsYmFjaygpOwogICAgIHZv
aWQgc2V0U3RhdGlzdGljc0xhc3RTZWVuKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBkb3VibGUgc2Vj
b25kcywgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2FsbERpZFNldExhc3RTZWVuQ2FsbGJhY2soKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NNZXJn
ZVN0YXRpc3RpYyhKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYgdG9wRnJhbWVEb21h
aW4sIGRvdWJsZSBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZh
bGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwg
SlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERp
ZFNldE1lcmdlU3RhdGlzdGljQ2FsbGJhY2soKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSwgSlNWYWx1ZVJl
ZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFByZXZh
bGVudFJlc291cmNlQ2FsbGJhY2soKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYg
Y29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCBlN2RiZTM4NzdkYzEyZjdlMjg2YTMzMmU3MThjNGI1MzRkOWNhMDM3Li4wYmQ3
NzYxYmJmYzU1MDRlZjIwNTlkOWExZjNiNDQ3NTc2MDc0ZTBiIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzI2MSw2ICszMjYxLDE0IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1N0cmluZ1JlZiBob3N0LCBkb3Vi
bGUgc2Vjb25kcykKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRMYXN0U2VlbigpOwog
fQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoV0tT
dHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4sIGRvdWJsZSBsYXN0U2Vl
biwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQ
cmV2YWxlbnQsIGludCBkYXRhUmVjb3Jkc1JlbW92ZWQpCit7CisgICAgUmVzb3VyY2VTdGF0aXN0
aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFT
dG9yZSgpLCBob3N0LCB0b3BGcmFtZURvbWFpbiwgbGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlv
biwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVu
dCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsICZjb250ZXh0LCByZXNvdXJj
ZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9u
ZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRNZXJnZVN0YXRpc3Rp
YygpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UoV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSkKIHsKICAgICBSZXNvdXJjZVN0YXRp
c3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKaW5kZXggZmQxYzUyYWE0MGFmMjZkNGRkMGQ4NjJhMjAzOTY2ODdj
MjY4NzIwZi4uNmMyZDJkODg2ZTAzYjc3YjYyYmU1NTM4YTIyYjliMGU4ZDRjNDFlNCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjEwLDYgKzIxMCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCB2YWx1ZSk7CiAgICAg
dm9pZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tTdHJpbmdS
ZWYgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLU3RyaW5nUmVm
IGhvc3ROYW1lLCBkb3VibGUgc2Vjb25kcyk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVyZ2VT
dGF0aXN0aWMoV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4sIGRv
dWJsZSBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwg
Ym9vbCBpc1ZlcnlQcmV2YWxlbnQsIGludCBkYXRhUmVjb3Jkc1JlbW92ZWQpOwogICAgIHZvaWQg
c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29s
IHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tT
dHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpOwogICAgIFN0cmluZyBkdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAppbmRleCBjNGQxOGFiZDlhNWM0YWMzM2JmMmFlMDI2YzI4ZmIwZTYyMmUzYTczLi4yZjhiMzA2
ZTJjOGM4NzNmZmQzMTc5NjFjODEyYzViYzg4MmI2M2NkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTEwMCw2ICsxMTAwLDM2IEBAIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3Rp
Y3NNZXJnZVN0YXRpc3RpYyIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworCisgICAgICAgIFdLRGljdGlvbmFy
eVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+
KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1l
S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWUiKSk7
CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0b3BGcmFtZURvbWFpbktleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRvcEZyYW1lRG9tYWluIikpOwor
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbGFzdFNlZW5LZXkgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMYXN0U2VlbiIpKTsKKyAgICAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IGhhZFVzZXJJbnRlcmFjdGlvbktleSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhhZFVzZXJJbnRlcmFjdGlvbiIpKTsKKyAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25LZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNb3N0UmVjZW50VXNlckludGVy
YWN0aW9uIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaXNHcmFuZGZhdGhl
cmVkS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNHcmFuZGZh
dGhlcmVkIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaXNQcmV2YWxlbnRL
ZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1ByZXZhbGVudCIp
KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGlzVmVyeVByZXZhbGVudEtleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzVmVyeVByZXZhbGVudCIp
KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRhdGFSZWNvcmRzUmVtb3ZlZEtl
eSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRhdGFSZWNvcmRzUmVt
b3ZlZCIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRpbWVzQWNjZXNzZWRG
aXJzdFBhcnR5SW50ZXJhY3Rpb25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJUaW1lc0FjY2Vzc2VkRmlyc3RQYXJ0eUludGVyYWN0aW9uIikpOworCisgICAgICAg
IFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlv
bmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQo
KSkpOworICAgICAgICBXS1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbiA9IHN0YXRpY19jYXN0PFdL
U3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFy
eSwgdG9wRnJhbWVEb21haW5LZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tEb3VibGVSZWYgbGFzdFNl
ZW4gPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleSht
ZXNzYWdlQm9keURpY3Rpb25hcnksIGxhc3RTZWVuS2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9v
bGVhblJlZiBoYWRVc2VySW50ZXJhY3Rpb24gPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBoYWRVc2VySW50
ZXJhY3Rpb25LZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tEb3VibGVSZWYgbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvbiA9IHN0YXRpY19jYXN0PFdLRG91YmxlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbktl
eS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgaXNHcmFuZGZhdGhlcmVkID0gc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5
RGljdGlvbmFyeSwgaXNHcmFuZGZhdGhlcmVkS2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9vbGVh
blJlZiBpc1ByZXZhbGVudCA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGlzUHJldmFsZW50S2V5LmdldCgp
KSk7CisgICAgICAgIFdLQm9vbGVhblJlZiBpc1ZlcnlQcmV2YWxlbnQgPSBzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9u
YXJ5LCBpc1ZlcnlQcmV2YWxlbnRLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tVSW50NjRSZWYgZGF0
YVJlY29yZHNSZW1vdmVkID0gc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdl
dEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBkYXRhUmVjb3Jkc1JlbW92ZWRLZXku
Z2V0KCkpKTsKKyAgICAgICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5z
ZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoaG9zdE5hbWUsIHRvcEZyYW1lRG9tYWluLCBXS0Rv
dWJsZUdldFZhbHVlKGxhc3RTZWVuKSwgV0tCb29sZWFuR2V0VmFsdWUoaGFkVXNlckludGVyYWN0
aW9uKSwgV0tEb3VibGVHZXRWYWx1ZShtb3N0UmVjZW50VXNlckludGVyYWN0aW9uKSwgV0tCb29s
ZWFuR2V0VmFsdWUoaXNHcmFuZGZhdGhlcmVkKSwgV0tCb29sZWFuR2V0VmFsdWUoaXNQcmV2YWxl
bnQpLCBXS0Jvb2xlYW5HZXRWYWx1ZShpc1ZlcnlQcmV2YWxlbnQpLCBXS1VJbnQ2NEdldFZhbHVl
KGRhdGFSZWNvcmRzUmVtb3ZlZCkpOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KyAgICAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dl
dFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogCkBAIC0x
ODAxLDYgKzE4MzEsMTIgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0TGFzdFNlZW4oKQog
ICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9
CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZE1lcmdlU3RhdGlzdGljKCkKK3sKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkTWVyZ2VTdGF0aXN0aWMiKSk7CisgICAgV0tQYWdlUG9z
dE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKK30KKwogdm9pZCBUZXN0
SW52b2NhdGlvbjo6ZGlkU2V0UHJldmFsZW50UmVzb3VyY2UoKQogewogICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkNhbGxEaWRTZXRQcmV2YWxlbnRSZXNvdXJjZSIpKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCA3NmFhOWI4ZTFkYzAyZWM4YWQ5Mzg2OTQxNTc0
NThmMTk1ZGEzY2Q2Li5hMjY1ZWI5YjI2ZTk0ZDFlNGE4ZmZkY2VmNWRlMjk0Mzk1MWJiNDA1IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC03OSw2ICs3OSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFNldFN0YXRpc3RpY3NEZWJ1Z01vZGUoKTsKICAgICB2b2lk
IGRpZFNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKCk7CiAgICAgdm9pZCBkaWRTZXRM
YXN0U2VlbigpOworICAgIHZvaWQgZGlkTWVyZ2VTdGF0aXN0aWMoKTsKICAgICB2b2lkIGRpZFNl
dFByZXZhbGVudFJlc291cmNlKCk7CiAgICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UoKTsKICAgICB2b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAw
Y2NhMWY1YzY1MmVkM2E4NzQzNDFmNTg0NWFkZDYyMGY5NjI4NjkuLjg1Y2Y5MDhlYmJmMzYzNTYw
YmM1ZWYzYzFjNjEyN2M0ZTkxOWU5YjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wOS0z
MCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBV
cGRhdGVkIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBhcmUgbmV2ZXIgbWVyZ2VkIGludG8gdGhl
IFNRTGl0ZSBEYXRhYmFzZSBiYWNrZW5kICgyMDIzNzIpLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NTg1NDU0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBsYXlvdXQgdGVzdHMgdG8gdGVzdCBzdWNjZXNmdWwgbWVyZ2luZyBvZiByZXNv
dXJjZSBsb2FkCisgICAgICAgIHN0YXRpc3RpY3MgaW50byBTUUxpdGUgYmFja2VuZC4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMt
ZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2Vz
LW5vdC1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1k
YXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2Uu
aHRtbDogQWRkZWQuCisKIDIwMTktMDktMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBQYWdlcyB3aXRoIFdlYiBXb3JrZXJzIGNhbm5vdCBlbnRlciB0aGUgYmFj
ayAvIGZvcndhcmQgY2FjaGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRh
dGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2U1ZWVlZGJmMWI0MzVmOTZjM2EyMGJmODE0MDFhZWU0
MzMxOTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJh
c2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3Zl
cndyaXRlLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90LW92ZXJ3cml0ZS1kYXRhYmFzZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjczN2NkM2FiMGRmZjQyYTc5NzEzMDlkMmM1ZGQ1MjJhYTk1NWZhY2YK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90LW92ZXJ3cml0ZS1kYXRhYmFzZS5odG1s
CkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhl
YWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDx0aXRsZT5UZXN0cyB0aGF0IG1l
cmdlZCBzdGF0aXN0aWMgZG9lcyBub3Qgb3ZlcndyaXRlIG9sZCBzdGF0aXN0aWM8L3RpdGxlPgor
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgnc2V0VXBBbmRSdW4oKScsIDApIj4KKzxzY3JpcHQ+
CisgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworCisgICAgY29uc3QgdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3Qg
c2FtcGxlVG9wRnJhbWVVUkwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCBv
bGRlclRpbWVzdGFtcCA9IE1hdGgucm91bmQoKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDAp
OworICAgIGNvbnN0IG5ld2VyVGltZXN0YW1wID0gb2xkZXJUaW1lc3RhbXAgKyAxMDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZnVuY3Rpb24gaW5zZXJ0U2Vj
b25kU3RhdGlzdGljKCkgeworICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWVyZ2VTdGF0
aXN0aWModXJsLCAiIiwgb2xkZXJUaW1lc3RhbXAsIGZhbHNlLCA5OSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgMCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKHVybCkpCisgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhv
c3Qgb3Zlcndyb3RlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuIik7CisgICAgICAgICAg
CisgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZSh1cmwpKQorICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IG92ZXJ3cm90ZSBvbGQg
dmVyeSBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuIik7CisKKyAgICAgICAgICBpZiAoIXRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHVybCkpCisgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkhvc3Qgb3Zlcndyb3RlIG9sZCBoYWQgdXNlciBpbnRlcmFjdGlvbiB2
YWx1ZSIpOworICAgICAgICAgICAKKyAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzR3JhbmRmYXRoZXJlZCh1cmwpKQorICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IG92
ZXJ3cm90ZSBvbGQgZ3JhbmRmYXRoZXJlZCB2YWx1ZS4iKTsKKyAgICAgICAgCisgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgZnVu
Y3Rpb24gcnVuVGVzdFJ1bm5lclRlc3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc01lcmdlU3RhdGlzdGljKHVybCwgIiIsIG5ld2VyVGltZXN0YW1wLCB0cnVlLCAxMDAsIHRy
dWUsIHRydWUsIHRydWUsIDEsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCF0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHVybCkpCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiSG9zdCBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAg
ICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZSh1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IHNldCBhcyBwcmV2
YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJIb3N0IGdvdCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJl
ZCh1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IHNldCBhcyBncmFu
ZGZhdGhlcmVkLiIpOworCisgICAgICAgICAgICBpbnNlcnRTZWNvbmRTdGF0aXN0aWMoKTsKKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0VXBBbmRSdW4oKSB7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VJ
VFBEYXRhYmFzZSh0cnVlKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJ1blRlc3RSdW5uZXJUZXN0KCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIm5vIHRl
c3RSdW5uZXIiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGlj
LWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3Jp
dGUtZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZTVlZWVkYmYxYjQzNWY5NmMz
YTIwYmY4MTQwMWFlZTQzMzE5ODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtb3Zlcndy
aXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRv
ZXMtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzFmOTNhMDg4YzU2Njc0NTVmZWNkYTU5YTUyYjY4MDZiYjdjZDEz
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbApA
QCAtMCwwICsxLDc3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFk
PgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8dGl0bGU+VGVzdHMgdGhhdCBtZXJn
ZWQgc3RhdGlzdGljIG92ZXJ3cml0ZXMgb2xkIHN0YXRpc3RpYzwvdGl0bGU+CisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJzZXRUaW1lb3V0KCdzZXRVcEFuZFJ1bigpJywgMCkiPgorPHNjcmlwdD4KKyAgICBpZiAo
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICBj
b25zdCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBzYW1wbGVUb3BG
cmFtZVVSTCA9ICJodHRwOi8vdG9wRnJhbWVEb21haW46ODAwMCI7CisgICAgY29uc3Qgb2xkZXJU
aW1lc3RhbXAgPSBNYXRoLnJvdW5kKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwKTsKKyAg
ICBjb25zdCBuZXdlclRpbWVzdGFtcCA9IG9sZGVyVGltZXN0YW1wICsgMTA7CisgICAgY29uc3Qg
bW9zdFJlY2VudFVJVG9UcmlnZ2VyRmlyc3RQYXJ0eUludGVyYWN0aW9uQ291bnQgPSBuZXdlclRp
bWVzdGFtcCArIDkwMDAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICBmdW5jdGlvbiBpbnNlcnRTZWNvbmRTdGF0aXN0aWMoKSB7CisgICAgCisgICAgICAgIC8v
IHNldCB0aGlzIHJlc291cmNlIGFzIHByZXZhbGVudCBzbyBpdCBpcyBpbiB0aGUgc3RhdGlzdGlj
cyBzdG9yZQorICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZShzYW1wbGVUb3BGcmFtZVVSTCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgIAorICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyh1cmwsIHNhbXBs
ZVRvcEZyYW1lVVJMLCBuZXdlclRpbWVzdGFtcCwgdHJ1ZSwgbW9zdFJlY2VudFVJVG9UcmlnZ2Vy
Rmlyc3RQYXJ0eUludGVyYWN0aW9uQ291bnQsIHRydWUsIHRydWUsIHRydWUsIDEsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHVybCkpCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9z
dCBub3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qg
bm90IHNldCBhcyB2ZXJ5IHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgICAg
ICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbih1cmwp
KQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IGxvZ2dlZCBmb3Ig
dXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKHVybCkpCisgICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBub3Qgc2V0IGFzIGdyYW5kZmF0aGVy
ZWQuIik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5u
ZXIuaXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcih1cmwsIHNhbXBsZVRvcEZy
YW1lVVJMKSkKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IG5vdCBzZXQg
YXMgc3ViZnJhbWUgdW5kZXIgdG9wIGZyYW1lLiIpOworICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgfSk7
CisgICAgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gcnVuVGVzdFJ1bm5lclRl
c3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKHVy
bCwgIiIsIG9sZGVyVGltZXN0YW1wLCBmYWxzZSwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290
IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgIGlmICh0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisK
KyAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFj
dGlvbih1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IGxvZ2dlZCBm
b3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQodXJsKSkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJIb3N0IGdvdCBzZXQgYXMgZ3JhbmRmYXRoZXJlZC4iKTsKKworICAgICAg
ICAgICAgaW5zZXJ0U2Vjb25kU3RhdGlzdGljKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHNldFVwQW5kUnVuKCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAg
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBydW5UZXN0UnVubmVyVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJubyB0ZXN0UnVubmVyIik7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379932</attachid>
            <date>2019-10-01 12:48:52 -0700</date>
            <delta_ts>2019-10-01 17:46:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202372-20191001124851.patch</filename>
            <type>text/plain</type>
            <size>107658</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNDM3M2FhOTljZWRiMzY0
ZjZjMGNjNTVjYzQ1YmUyNGRjM2U0N2EuLmVjNzk1NmMwNWFhZWFhMGFjODFkMjE4OWY3YjFjZjAy
NTUyYTliYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI2IEBACisyMDE5LTEwLTAxICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFyZSBuZXZlciBtZXJnZWQgaW50byB0aGUgU1FMaXRlIERh
dGFiYXNlIGJhY2tlbmQgKDIwMjM3MikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDIzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1ODU0NTQy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaGFzIGEgbG90IG9mIGNoYW5nZXMgdG8gdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
YmUgYWJsZSAKKyAgICAgICAgdG8gdGVzdCB0aGUgbWVyZ2VTdGF0aXN0aWNzIGZ1bmN0aW9uLiBN
ZXJnaW5nIGZ1bmN0aW9uYWxpdHkgbWltaWNzCisgICAgICAgIHRoYXQgb2YgdGhlIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSBhbmQgdGhlIG1lcmdlKCkgZnVuY3Rpb24gaW4KKyAg
ICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToKKyAgICAgICAgQWRkZWQgbmV3IFNR
TGl0ZSBxdWVyaWVzIHRoYXQgYXJlIG5lZWRlZCB0byBtZXJnZSBuZXcgc3RhdGlzdGljcy4KKwor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJl
cGFyZVN0YXRlbWVudHMpOgorICAgICAgICBBZGRlZCBuZXcgcHJlcGFyZSBzdGF0ZW1lbnRzIGZv
ciBuZXcgU1FMaXRlIHF1ZXJpZXMuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKToKKyAgICAgICAgVXBk
YXRlZCB0byB1c2UgZG9tYWluSUQoKSBpbnN0ZWFkIG9mIGNvbmZpcm1Eb21haW5Eb2VzTm90RXhp
c3Qgd2hpY2ggCisgICAgICAgIHdhcyBkZWxldGVkLiBDaGFuZ2VkIHRoZSBpbnNlcnQgYmluZCBw
YXJhbWV0ZXJzCisgICAgICAgIHRvIHV0aWxpemUgbmV3IGVudW0gb2YgT2JzZXJ2ZWQgRG9tYWlu
IHRhYmxlIGluZGljZXMgd2hpY2ggd2lsbCBoZWxwCisgICAgICAgIHJlZHVjZSBlcnJvcnMgaW4g
dGhlIGZ1dHVyZSBpZiB0aGUgZGF0YWJhc2Ugc2NoZW1hIGNoYW5nZXMuCisKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4
aXN0cyBjb25zdCk6CisgICAgICAgIENoYW5nZWQge3B1YmxpY30gdG8ge3ByaXZhdGV9IGluIGxv
Z2dpbmcgc3RhdGVtZW50IHRvIGF2b2lkIGxlYWtpbmcKKyAgICAgICAgc2Vuc2l0aXZlIGluZm9y
bWF0aW9uIHdoZW4gbG9nZ2luZyB0aGUgcXVlcnkgZXJyb3IuCisKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvbmZpcm1Eb21haW5Eb2VzTm90
RXhpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGVzc2VudGlhbGx5
IGRvZXMgdGhlIGV4YWN0IHNhbWUgdGhpbmcgYXMgZG9tYWluSUQgYW5kCisgICAgICAgIHdlIGNh
biByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiBieSBkZWxldGluZyBpdCBhbmQgdHJhbnNpdGlvbmlu
ZyBhbGwKKyAgICAgICAgb3RoZXIgZnVuY3Rpb25zIHRvIHVzZSBkb21haW5JRCBpbnN0ZWFkLgor
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpk
b21haW5JRCBjb25zdCk6CisgICAgICAgIENoYW5nZWQge3B1YmxpY30gdG8ge3ByaXZhdGV9IGlu
IGxvZ2dpbmcgc3RhdGVtZW50IHRvIGF2b2lkIGxlYWtpbmcKKyAgICAgICAgc2Vuc2l0aXZlIGlu
Zm9ybWF0aW9uIHdoZW4gbG9nZ2luZyB0aGUgcXVlcnkgZXJyb3IuCisgICAgICAgIAorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9t
YWluUmVsYXRpb25zaGlwcyk6CisgICAgICAgIEluIG9yZGVyIHRvIHJldXNlIHRoaXMgY29kZSBm
b3IgdGhlIG1lcmdlIHN0YXRpc3RpY3MgZnVuY3Rpb24sIEkgYWRkZWQKKyAgICAgICAgYSBjaGVj
ayBiZWZvcmUgZWFjaCBpbnNlcnQgY2FsbCB0byBlbnN1cmUgdGhlIHJlbGF0aW9uc2hpcCBkb2Vz
IG5vdAorICAgICAgICBhbHJlYWR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS4gVGhpcyB3YXMgbm90
IG5lZWRlZCBiZWZvcmUgYmVjYXVzZSBpdAorICAgICAgICB3YXMgb25seSBjYWxsZWQgb24gYW4g
ZW1wdHkgZGF0YWJhc2UuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1lcmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyk6Cisg
ICAgICAgIE1lcmdlcyBuZXcgc3RhdGlzdGljLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50
Rm9yRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0
ZWRUb1RoaXNEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFu
ZGZhdGhlckRhdGFGb3JEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzZXRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVkaWNh
dGVWYWx1ZUZvckRvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAg
Q2hhbmdlZCB7cHVibGljfSB0byB7cHJpdmF0ZX0gaW4gbG9nZ2luZyBzdGF0ZW1lbnQgdG8gYXZv
aWQgbGVha2luZworICAgICAgICBzZW5zaXRpdmUgaW5mb3JtYXRpb24gd2hlbiBsb2dnaW5nIHRo
ZSBxdWVyeSBlcnJvci4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZCk6CisgICAgICAgIEZpeCBhIGJ1ZyB1bmNv
dmVyZWQgYnkgdGhlIG5ldyB0ZXN0IGNhc2VzLgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVUcmVh
dG1lbnRGb3JPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJFeHBpcmVkVXNlckludGVyYWN0aW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckdy
YW5kZmF0aGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuKToKKyAg
ICAgICAgQ2hhbmdlZCB7cHVibGljfSB0byB7cHJpdmF0ZX0gaW4gbG9nZ2luZyBzdGF0ZW1lbnQg
dG8gYXZvaWQgbGVha2luZworICAgICAgICBzZW5zaXRpdmUgaW5mb3JtYXRpb24gd2hlbiBsb2dn
aW5nIHRoZSBxdWVyeSBlcnJvci4KKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQpOgor
ICAgICAgICBBIG5ldyBmdW5jdGlvbiB0aGF0IHV0aWxpemVzIGEgcXVlcnkgbmVlZGVkIGZvciB0
aGUgbWVyZ2luZyBvZiB0d28KKyAgICAgICAgc3RhdGlzdGljcy4KKyAgICAgICAgCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb25maXJtRG9t
YWluRG9lc05vdEV4aXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAg
ICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjptZXJnZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Ondhc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9Vc2VySW50ZXJhY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmVkIHRo
ZSBjaGVjayBmb3IgdXBkYXRpbmcgdGltZXMgYWNjZXNzZWQgZHVlIHRvIGZpcnN0IHBhcnR5IAor
ICAgICAgICBpbnRlcmFjdGlvbiwgd2hpY2ggaXMgZGF0YSBubyBsb25nZXIgbmVlZGVkIGluIHVw
ZGF0ZWQgSVRQLiAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgQWRkZWQg
dGhlIG1lcmdlU3RhdGlzdGljcyBmdW5jdGlvbiAocHJldmlvdXNseSBvbmx5IGluIHRoZSBtZW1v
cnkKKyAgICAgICAgc3RvcmUpIHRvIHRoZSBwYXJlbnQgY2xhc3Mgbm93IHRoYXQgaXQgaXMgdXNl
ZCBieSBib3RoIHN0b3Jlcy4KKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBub3cgY2FsbHMgbWVyZ2VTdGF0aXN0
aWNzIG9uIHRoZSBkYXRhYmFzZSBzdG9yZSBpZgorICAgICAgICBlbmFibGVkLgorCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNG
b3JUZXN0aW5nKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBidWlsZHMgYSB2ZWN0b3IgZnJvbSB0
aGUgc2FtcGxlIGRhdGEgdG8gdGVzdCB0aGUKKyAgICAgICAgbWVyZ2VTdGF0aXN0aWNzKCkgZnVu
Y3Rpb24gb2YgdGhlIGRhdGFiYXNlIHN0b3JlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzTWVyZ2VTdGF0aXN0aWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bWVyZ2VT
dGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjptZXJnZVN0
YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmg6CisgICAgICAgIFRoaXMgY29kZSBpcyBmb3IgdGVzdGluZyB0aGUgbWVy
Z2VTdGF0aXN0aWNzKCkgZnVuY3Rpb24uCisKIDIwMTktMDktMzAgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIERvd25sb2FkTW9uaXRv
ciB0ZXN0IHNwZWVkIG11bHRpcGxpZXIgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMmMzMDRlNzk0ZjIzNzEzM2ZiNWIyYzk3YWQ4
OGVkN2EwM2FhN2FmNy4uOTZiZDc5NjQyYWNlNzg3ZWYxMDFlZjRmN2VkYWJlOWE0ZDU2OGQ3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwCkBAIC03MCw2ICs3MCw4IEBAIGNvbnN0ZXhwciBhdXRvIGluc2VydFRvcExldmVsRG9t
YWluUXVlcnkgPSAiSU5TRVJUIElOVE8gVG9wTGV2ZWxEb21haW5zIFZBTFVFUyAoCiBjb25zdGV4
cHIgYXV0byBkb21haW5JREZyb21TdHJpbmdRdWVyeSA9ICJTRUxFQ1QgZG9tYWluSUQgRlJPTSBP
YnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwogY29uc3RleHBy
IGF1dG8gc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zUXVlcnkgPSAiSU5TRVJUIElO
VE8gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIChkb21haW5JRCwgdG9wTGV2ZWxE
b21haW5JRCkgIgogICAgICJTRUxFQ1QgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMg
V0hFUkUgcmVnaXN0cmFibGVEb21haW4gPT0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIHN0b3JhZ2VB
Y2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNF
TEVDVCAxIEZST00gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFp
bklEID0gPyAiCisiQU5EIHRvcExldmVsRG9tYWluSUQgPSAoU0VMRUNUIGRvbWFpbklEIEZST00g
T2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPykpIl9zOwogY29uc3Rl
eHByIGF1dG8gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1F1ZXJ5ID0gIklOU0VSVCBJTlRPIFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gKHNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEKSBTRUxF
Q1QgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21h
aW4gPT0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9FeGlz
dHNRdWVyeSA9ICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG8gV0hFUkUgc291cmNlRG9tYWluSUQgPSA/ICIKICAgICAiQU5EIHRvRG9tYWluSUQg
PSAoU0VMRUNUIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxl
RG9tYWluID0gPykpIl9zOwpAQCAtMTAwLDYgKzEwMiw3IEBAIGNvbnN0ZXhwciBhdXRvIHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUV4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNF
TEVDCiBjb25zdGV4cHIgYXV0byBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uUXVlcnkgPSAiVVBE
QVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaGFkVXNlckludGVyYWN0aW9uID0gPywgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUgPSA/ICIKICAgICAiV0hFUkUgcmVnaXN0cmFibGVEb21haW4g
PSA/Il9zOwogY29uc3RleHByIGF1dG8gdXBkYXRlTGFzdFNlZW5RdWVyeSA9ICJVUERBVEUgT2Jz
ZXJ2ZWREb21haW5zIFNFVCBsYXN0U2VlbiA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/
Il9zOworY29uc3RleHByIGF1dG8gdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkUXVlcnkgPSAiVVBE
QVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZGF0YVJlY29yZHNSZW1vdmVkID0gPyBXSEVSRSByZWdp
c3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byB1cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gPyBX
SEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byBpc1ByZXZhbGVu
dFJlc291cmNlUXVlcnkgPSAiU0VMRUNUIGlzUHJldmFsZW50IEZST00gT2JzZXJ2ZWREb21haW5z
IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHVwZGF0ZVZl
cnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlz
VmVyeVByZXZhbGVudCA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwpAQCAtMTE1
LDcgKzExOCwyMSBAQCBjb25zdGV4cHIgYXV0byBjcmVhdGVPYnNlcnZlZERvbWFpbiA9ICJDUkVB
VEUgVEFCTEUgT2JzZXJ2ZWREb21haW5zICgiCiAgICAgImhhZFVzZXJJbnRlcmFjdGlvbiBJTlRF
R0VSIE5PVCBOVUxMLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSBSRUFMIE5PVCBOVUxM
LCBncmFuZGZhdGhlcmVkIElOVEVHRVIgTk9UIE5VTEwsICIKICAgICAiaXNQcmV2YWxlbnQgSU5U
RUdFUiBOT1QgTlVMTCwgaXNWZXJ5UHJldmFsZW50IElOVEVHRVIgTk9UIE5VTEwsIGRhdGFSZWNv
cmRzUmVtb3ZlZCBJTlRFR0VSIE5PVCBOVUxMLCIKICAgICAidGltZXNBY2Nlc3NlZEFzRmlyc3RQ
YXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIElOVEVHRVIgTk9UIE5VTEwsIHRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgSU5URUdFUiBOT1QgTlVMTCk7Il9zOwot
ICAgIAorCitlbnVtIHsKKyAgICBEb21haW5JREluZGV4LAorICAgIFJlZ2lzdHJhYmxlRG9tYWlu
SW5kZXgsCisgICAgTGFzdFNlZW5JbmRleCwKKyAgICBIYWRVc2VySW50ZXJhY3Rpb25JbmRleCwK
KyAgICBNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4LAorICAgIEdyYW5kZmF0aGVy
ZWRJbmRleCwKKyAgICBJc1ByZXZhbGVudEluZGV4LAorICAgIElzVmVyeVByZXZhbGVudEluZGV4
LAorICAgIERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4LAorICAgIFRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbkluZGV4LAorICAgIFRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUElJbmRleAorfTsKKwogY29uc3RleHByIGF1dG8gY3Jl
YXRlVG9wTGV2ZWxEb21haW5zID0gIkNSRUFURSBUQUJMRSBUb3BMZXZlbERvbWFpbnMgKCIKICAg
ICAidG9wTGV2ZWxEb21haW5JRCBJTlRFR0VSIFBSSU1BUlkgS0VZLCBDT05TVFJBSU5UIGZrRG9t
YWluSUQgRk9SRUlHTiBLRVkodG9wTGV2ZWxEb21haW5JRCkgIgogICAgICJSRUZFUkVOQ0VTIE9i
c2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpOyJfczsKQEAgLTE2OCw2
ICsxODUsNyBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzbwogICAgICwgbV9pbnNlcnRUb3BMZXZl
bERvbWFpblN0YXRlbWVudChtX2RhdGFiYXNlLCBpbnNlcnRUb3BMZXZlbERvbWFpblF1ZXJ5KQog
ICAgICwgbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZG9tYWluSURG
cm9tU3RyaW5nUXVlcnkpCiAgICAgLCBtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlu
c1N0YXRlbWVudChtX2RhdGFiYXNlLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNR
dWVyeSkKKyAgICAsIG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zRXhpc3RzU3Rh
dGVtZW50KG1fZGF0YWJhc2UsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0
c1F1ZXJ5KQogICAgICwgbV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKG1fZGF0YWJhc2UsIHRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9RdWVyeSkKICAgICAsIG1fdG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUb0V4aXN0cyhtX2RhdGFiYXNlLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3Rz
UXVlcnkpCiAgICAgLCBtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbShtX2RhdGFiYXNlLCB0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21RdWVyeSkKQEAgLTE4NCw2ICsyMDIsNyBAQCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUoV2ViUmVzbwogICAgICwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b21FeGlzdHMobV9kYXRhYmFzZSwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tRXhpc3Rz
UXVlcnkpCiAgICAgLCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9kYXRh
YmFzZSwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblF1ZXJ5KQogICAgICwgbV91cGRhdGVMYXN0
U2VlblN0YXRlbWVudChtX2RhdGFiYXNlLCB1cGRhdGVMYXN0U2VlblF1ZXJ5KQorICAgICwgbV91
cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdXBkYXRlRGF0YVJl
Y29yZHNSZW1vdmVkUXVlcnkpCiAgICAgLCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50KG1fZGF0YWJhc2UsIHVwZGF0ZVByZXZhbGVudFJlc291cmNlUXVlcnkpCiAgICAgLCBtX2lz
UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQobV9kYXRhYmFzZSwgaXNQcmV2YWxlbnRSZXNvdXJj
ZVF1ZXJ5KQogICAgICwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQobV9k
YXRhYmFzZSwgdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlUXVlcnkpCkBAIC0xOTgsNyArMjE3
LDcgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc28KICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKG1fc3RvcmFnZURpcmVjdG9yeVBhdGgp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtw
dWJsaWN9cywgZGF0YWJhc2UgcGF0aDogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpvcGVuIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMs
IGRhdGFiYXNlIHBhdGg6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDgsMTcgKzIy
NywxNyBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzbwogCiAgICAgaWYgKCFtX2RhdGFiYXNlLnRh
YmxlRXhpc3RzKCJPYnNlcnZlZERvbWFpbnMiX3MpKSB7CiAgICAgICAgIGlmICghY3JlYXRlU2No
ZW1hKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hlbWEgZmFpbGVkLCBl
cnJvciBtZXNzYWdlOiAle3B1YmxpY31zLCBkYXRhYmFzZSBwYXRoOiAle3B1YmxpY31zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hlbWEgZmFpbGVk
LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cywgZGF0YWJhc2UgcGF0aDogJXtwcml2YXRlfXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRo
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2RhdGFi
YXNlLnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpKQotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJs
aWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKIAogICAgIGlm
ICghcHJlcGFyZVN0YXRlbWVudHMoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3
b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFyZVN0
YXRlbWVudHMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zLCBkYXRhYmFzZSBwYXRo
OiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdl
RGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBh
cmVTdGF0ZW1lbnRzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMsIGRhdGFiYXNl
IHBhdGg6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9z
dG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMDksNiArMzI4LDcgQEAgYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFyZVN0YXRlbWVudHMo
KQogICAgICAgICB8fCBtX2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZy
YW1lRG9tYWluc1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1f
c3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zRXhpc3RzU3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvRXhpc3RzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV90b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c0Zyb20ucHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMzIyLDYgKzM0Miw3
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0
ZW1lbnRzKCkKICAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20ucHJl
cGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbUV4aXN0cy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdXBkYXRl
TGFzdFNlZW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3Vw
ZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAg
ICAgICAgIHx8IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5wcmVwYXJlKCkg
IT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX2lzUHJldmFsZW50UmVzb3Vy
Y2VTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMzM0LDcgKzM1NSw3IEBAIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRz
KCkKICAgICAgICAgfHwgbV9maW5kRXhwaXJlZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNG
cm9tLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV90b3BGcmFtZUxpbmtEZWNv
cmF0aW9uc0Zyb21FeGlzdHMucHJlcGFyZSgpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cHJlcGFyZVN0YXRlbWVudHMgZmFpbGVkIHRvIHByZXBhcmUsIGVycm9yIG1lc3Nh
Z2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzIGZhaWxlZCB0byBwcmVwYXJlLCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTM0NiwyNyArMzY3LDI5IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKGNvbnN0IFJlc291cmNlTG9hCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgQVNT
RVJUKGNvbmZpcm1Eb21haW5Eb2VzTm90RXhpc3QobG9hZFN0YXRpc3RpY3MucmVnaXN0cmFibGVE
b21haW4pKTsKLSNlbmRpZgorICAgIGlmIChkb21haW5JRChsb2FkU3RhdGlzdGljcy5yZWdpc3Ry
YWJsZURvbWFpbikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNl
cnZlZERvbWFpbiBjYW4gb25seSBiZSBjYWxsZWQgb24gZG9tYWlucyBub3QgaW4gdGhlIGRhdGFi
YXNlLiIpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KIAotICAgIGlmIChtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJp
bmRUZXh0KDEsIGxvYWRTdGF0aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5k
RG91YmxlKDIsIGxvYWRTdGF0aXN0aWNzLmxhc3RTZWVuLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0
ZW1lbnQuYmluZEludCgzLCBsb2FkU3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pICE9IFNR
TElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRE
b3VibGUoNCwgbG9hZFN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KDUsIGxvYWRTdGF0aXN0aWNzLmdyYW5k
ZmF0aGVyZWQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWlu
U3RhdGVtZW50LmJpbmRJbnQoNiwgbG9hZFN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSkg
IT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQu
YmluZEludCg3LCBsb2FkU3RhdGlzdGljcy5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZElu
dCg4LCBsb2FkU3RhdGlzdGljcy5kYXRhUmVjb3Jkc1JlbW92ZWQpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoOSwgbG9hZFN0
YXRpc3RpY3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5i
aW5kSW50KDEwLCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9T
dG9yYWdlQWNjZXNzQVBJKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBiaW5kLCBlcnJvciBt
ZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgaWYgKG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZFRleHQoUmVnaXN0cmFi
bGVEb21haW5JbmRleCwgbG9hZFN0YXRpc3RpY3MucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkp
ICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50
LmJpbmREb3VibGUoTGFzdFNlZW5JbmRleCwgbG9hZFN0YXRpc3RpY3MubGFzdFNlZW4uc2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRP
YnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4LCBs
b2FkU3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSworICAgICAgICB8
fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmREb3VibGUoTW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWVJbmRleCwgbG9hZFN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KEdyYW5kZmF0
aGVyZWRJbmRleCwgbG9hZFN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChJc1ByZXZh
bGVudEluZGV4LCBsb2FkU3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJVEVf
T0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KElz
VmVyeVByZXZhbGVudEluZGV4LCBsb2FkU3RhdGlzdGljcy5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1l
bnQuYmluZEludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRleCwgbG9hZFN0YXRpc3RpY3MuZGF0YVJl
Y29yZHNSZW1vdmVkKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERv
bWFpblN0YXRlbWVudC5iaW5kSW50KFRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJ
bnRlcmFjdGlvbkluZGV4LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9Vc2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9i
c2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1
ZVRvU3RvcmFnZUFjY2Vzc0FQSUluZGV4LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vzc2VkQXNG
aXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0
byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVt
ZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0
T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGNvbW1pdCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGNvbW1pdCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0z
ODcsNyArNDEwLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVsYXRpb25zaGlwRXhpc3RzKFdlYkNvcmU6OlNRTGl0ZVN0YXQKICAgICBpZiAoc3RhdGVtZW50
LmJpbmRJbnQoMSwgKmZpcnN0RG9tYWluSUQpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzdGF0
ZW1lbnQuYmluZFRleHQoMiwgc2Vjb25kRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgfHwgc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX2luc2VydERvbWFpblJlbGF0aW9uc2hpcFN0YXRlbWVu
dCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bV9pbnNlcnREb21haW5SZWxhdGlvbnNoaXBTdGF0ZW1lbnQgZmFpbGVkIHRvIGJpbmQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQpAQCAtNDA2LDcgKzQyOSw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcChXZWJDb3JlOjpTUUxpCiAgICAg
aWYgKHN0YXRlbWVudC5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
fHwgc3RhdGVtZW50LmJpbmRUZXh0KDIsIHRvcEZyYW1lLnN0cmluZygpKSAhPSBTUUxJVEVfT0sK
ICAgICAgICAgfHwgc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV9pbnNlcnREb21haW5SZWxhdGlvbnNoaXBTdGF0
ZW1lbnQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1faW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwU3RhdGVtZW50IGZhaWxlZCB0byBiaW5k
LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KQEAgLTQxNywzMCArNDQwLDYgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKFdlYkNvcmU6OlNRTGkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmbmRlZiBOREVCVUcKLWJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvbmZpcm1Eb21haW5Eb2VzTm90RXhpc3QoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLQotICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5iaW5k
VGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29uZmlybURvbWFpbkRvZXNOb3RFeGlzdCBmYWlsZWQgdG8g
YmluZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICAgICAgCi0gICAgaWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3Rh
dGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGludCByZXNldFJlc3VsdCA9
IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2RvbWFpbklERnJv
bVN0cmluZ1N0YXRlbWVudC5yZXNldCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQs
IHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0j
ZW5kaWYKLQogT3B0aW9uYWw8dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpkb21haW5JRChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNDQ4LDcgKzQ0Nyw3IEBAIE9w
dGlvbmFsPHVuc2lnbmVkPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9t
YWluSUQoY29uc3QgUmVnaXN0cmFiCiAgICAgdW5zaWduZWQgZG9tYWluSUQgPSAwOwogCiAgICAg
aWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJp
bmcoKSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojpkb21haW5JREZyb21TdHJpbmcgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkb21haW5JREZyb21TdHJpbmcgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAl
e3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KICAgICAKQEAgLTQ3NCwyNiArNDczLDQwIEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0
aW9uc2hpcHMoY29uc3QgUmVzb3VyCiAgICAgaWYgKCFyZWdpc3RyYWJsZURvbWFpbklEKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgZm9yIChhdXRvJiB0b3BGcmFtZURvbWFpbiA6IGxvYWRT
dGF0aXN0aWNzLnN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucykKLSAgICAgICAgaW5z
ZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5z
U3RhdGVtZW50LCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKTsK
KyAgICBmb3IgKGF1dG8mIHRvcEZyYW1lRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKSB7CisgICAgICAgIGlmICghcmVsYXRpb25zaGlwRXhp
c3RzKG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zRXhpc3RzU3RhdGVtZW50LCBy
ZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKSkKKyAgICAgICAgICAg
IGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9t
YWluc1N0YXRlbWVudCwgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b3BGcmFtZURvbWFp
bik7CisgICAgfQogCi0gICAgZm9yIChhdXRvJiB0b0RvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pCi0gICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hp
cChtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8sIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUo
KSwgdG9Eb21haW4pOworICAgIGZvciAoYXV0byYgdG9Eb21haW4gOiBsb2FkU3RhdGlzdGljcy50
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKSB7CisgICAgICAgIGlmICghcmVsYXRpb25zaGlwRXhp
c3RzKG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0V4aXN0cywgcmVnaXN0cmFibGVEb21haW5J
RC52YWx1ZSgpLCB0b0RvbWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNo
aXAobV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVl
KCksIHRvRG9tYWluKTsKKyAgICB9CiAgICAgCi0gICAgZm9yIChhdXRvJiBmcm9tRG9tYWluIDog
bG9hZFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKQotICAgICAgICBpbnNl
cnREb21haW5SZWxhdGlvbnNoaXAobV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHJlZ2lz
dHJhYmxlRG9tYWluSUQudmFsdWUoKSwgZnJvbURvbWFpbik7CisgICAgZm9yIChhdXRvJiBmcm9t
RG9tYWluIDogbG9hZFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKSB7Cisg
ICAgICAgIGlmICghcmVsYXRpb25zaGlwRXhpc3RzKG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNG
cm9tRXhpc3RzLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIGZyb21Eb21haW4pKQorICAg
ICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNGcm9tLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIGZyb21Eb21haW4pOworICAgIH0K
ICAgICAKLSAgICBmb3IgKGF1dG8mIHRvcEZyYW1lRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucykKLSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25z
aGlwKG1fc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucywgcmVnaXN0cmFibGVEb21haW5JRC52
YWx1ZSgpLCB0b3BGcmFtZURvbWFpbik7CisgICAgZm9yIChhdXRvJiB0b3BGcmFtZURvbWFpbiA6
IGxvYWRTdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpIHsKKyAgICAgICAg
aWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5FeGlz
dHMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pKQorICAgICAg
ICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9t
YWlucywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b3BGcmFtZURvbWFpbik7CisgICAg
fQogICAgIAotICAgIGZvciAoYXV0byYgdG9wRnJhbWVEb21haW4gOiBsb2FkU3RhdGlzdGljcy5z
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKQotICAgICAgICBpbnNlcnREb21haW5SZWxh
dGlvbnNoaXAobV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zLCByZWdpc3RyYWJsZURv
bWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKTsKKyAgICBmb3IgKGF1dG8mIHRvcEZyYW1l
RG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucykg
eworICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyhtX3N1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbkV4aXN0cywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b3BGcmFtZURv
bWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5zLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvcEZy
YW1lRG9tYWluKTsKKyAgICB9CiAgICAgCi0gICAgZm9yIChhdXRvJiB0b0RvbWFpbiA6IGxvYWRT
dGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pCi0gICAgICAgIGluc2VydERv
bWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIHJlZ2lzdHJh
YmxlRG9tYWluSUQudmFsdWUoKSwgdG9Eb21haW4pOworICAgIGZvciAoYXV0byYgdG9Eb21haW4g
OiBsb2FkU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSB7CisgICAgICAg
IGlmICghcmVsYXRpb25zaGlwRXhpc3RzKG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0V4
aXN0cywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b0RvbWFpbikpCisgICAgICAgICAg
ICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
LCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvRG9tYWluKTsKKyAgICB9CiAgICAgCi0g
ICAgZm9yIChhdXRvJiBmcm9tRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tKQotICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwg
ZnJvbURvbWFpbik7CisgICAgZm9yIChhdXRvJiBmcm9tRG9tYWluIDogbG9hZFN0YXRpc3RpY3Mu
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKSB7CisgICAgICAgIGlmICghcmVsYXRpb25z
aGlwRXhpc3RzKG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tRXhpc3RzLCByZWdpc3Ry
YWJsZURvbWFpbklELnZhbHVlKCksIGZyb21Eb21haW4pKQorICAgICAgICAgICAgaW5zZXJ0RG9t
YWluUmVsYXRpb25zaGlwKG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLCByZWdpc3Ry
YWJsZURvbWFpbklELnZhbHVlKCksIGZyb21Eb21haW4pOworICAgIH0KIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUo
Y29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlJiBtZW1vcnlTdG9yZSkKQEAg
LTUxMyw2ICs1MjYsNzMgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6cG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUoY29uc3QgUmVzb3VyY2UKICAgICAgICAgaW5zZXJ0
RG9tYWluUmVsYXRpb25zaGlwcyhzdGF0aXN0aWMudmFsdWUpOwogfQogCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQmIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIG90aGVyKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byBjdXJyZW50UmVnaXN0cmFi
bGVEb21haW4gPSBjdXJyZW50LmdldENvbHVtblRleHQoUmVnaXN0cmFibGVEb21haW5JbmRleCk7
CisgICAgYXV0byBjdXJyZW50TGFzdFNlZW4gPSBjdXJyZW50LmdldENvbHVtbkRvdWJsZShMYXN0
U2VlbkluZGV4KTsKKyAgICBhdXRvIGN1cnJlbnRNb3N0UmVjZW50VXNlckludGVyYWN0aW9uID0g
Y3VycmVudC5nZXRDb2x1bW5Eb3VibGUoTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRl
eCk7CisgICAgYm9vbCBjdXJyZW50R3JhbmRmYXRoZXJlZCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50
KEdyYW5kZmF0aGVyZWRJbmRleCk7CisgICAgYm9vbCBjdXJyZW50SXNQcmV2YWxlbnQgPSBjdXJy
ZW50LmdldENvbHVtbkludChJc1ByZXZhbGVudEluZGV4KTsKKyAgICBib29sIGN1cnJlbnRJc1Zl
cnlQcmV2YWxlbnQgPSBjdXJyZW50LmdldENvbHVtbkludChJc1ZlcnlQcmV2YWxlbnRJbmRleCk7
CisgICAgdW5zaWduZWQgY3VycmVudERhdGFSZWNvcmRzUmVtb3ZlZCA9IGN1cnJlbnQuZ2V0Q29s
dW1uSW50KERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4KTsKKworICAgIEFTU0VSVChjdXJyZW50UmVn
aXN0cmFibGVEb21haW4gPT0gb3RoZXIucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpOworCisg
ICAgaWYgKFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhjdXJyZW50TGFzdFNlZW4pIDwgb3RoZXIu
bGFzdFNlZW4pCisgICAgICAgIHVwZGF0ZUxhc3RTZWVuKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWlu
LCBvdGhlci5sYXN0U2Vlbik7CisKKyAgICBpZiAoIW90aGVyLmhhZFVzZXJJbnRlcmFjdGlvbikg
eworICAgICAgICAvLyBJZiBtb3N0IHJlY2VudCB1c2VyIGludGVyYWN0aW9uIHRpbWUgaGFzIGJl
ZW4gcmVzZXQgZG8gc28gaGVyZSB0b28uCisgICAgICAgIGlmICghb3RoZXIubW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUpCisgICAgICAgICAgICBzZXRVc2VySW50ZXJhY3Rpb24ob3RoZXIu
cmVnaXN0cmFibGVEb21haW4sIGZhbHNlLCB7IH0pOworICAgIH0gZWxzZQorICAgICAgICBzZXRV
c2VySW50ZXJhY3Rpb24ob3RoZXIucmVnaXN0cmFibGVEb21haW4sIHRydWUsIHN0ZDo6bWF4KFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhjdXJyZW50TW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiks
IG90aGVyLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSk7CisKKyAgICBpZiAob3RoZXIu
Z3JhbmRmYXRoZXJlZCAmJiAhY3VycmVudEdyYW5kZmF0aGVyZWQpCisgICAgICAgIHNldEdyYW5k
ZmF0aGVyZWQob3RoZXIucmVnaXN0cmFibGVEb21haW4sIHRydWUpOworICAgIGlmIChvdGhlci5p
c1ByZXZhbGVudFJlc291cmNlICYmICFjdXJyZW50SXNQcmV2YWxlbnQpCisgICAgICAgIHNldFBy
ZXZhbGVudFJlc291cmNlKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAob3RoZXIu
aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UgJiYgIWN1cnJlbnRJc1ZlcnlQcmV2YWxlbnQpCisgICAg
ICAgIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShvdGhlci5yZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgaWYgKG90aGVyLmRhdGFSZWNvcmRzUmVtb3ZlZCA+IGN1cnJlbnREYXRhUmVjb3Jkc1JlbW92
ZWQpCisgICAgICAgIHVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZChvdGhlci5yZWdpc3RyYWJsZURv
bWFpbiwgb3RoZXIuZGF0YVJlY29yZHNSZW1vdmVkKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWMoY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgc3RhdGlzdGljKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgU1FMaXRlU3RhdGVtZW50IGZldGNoT2xkU3RhdGlzdGljRGF0YShtX2RhdGFiYXNl
LCAiU0VMRUNUICogRlJPTSBPYnNlcnZlZERvbWFpbnMgd2hlcmUgcmVnaXN0cmFibGVEb21haW4g
PSA/Iik7CisgICAgaWYgKGZldGNoT2xkU3RhdGlzdGljRGF0YS5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IGZldGNoT2xkU3RhdGlzdGljRGF0YS5iaW5kVGV4dCgxLCBzdGF0aXN0
aWMucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBm
ZXRjaE9sZFN0YXRpc3RpY0RhdGEuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljLiBTdGF0ZW1lbnQgZmFpbGVk
IHRvIGJpbmQgb3IgZG9tYWluIHdhcyBub3QgZm91bmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWVyZ2UoZmV0Y2hP
bGRTdGF0aXN0aWNEYXRhLCBzdGF0aXN0aWMpOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0
YXRpc3RpY3M+JiYgc3RhdGlzdGljcykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogc3RhdGlzdGljcykgeworICAgICAgICBp
ZiAoIWRvbWFpbklEKHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICBp
bnNlcnRPYnNlcnZlZERvbWFpbihzdGF0aXN0aWMpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtZXJnZVN0YXRpc3RpYyhzdGF0aXN0aWMpOworICAgIH0KKworICAgIC8vIE1ha2UgYSBzZXBh
cmF0ZSBwYXNzIGZvciBpbnRlci1kb21haW4gcmVsYXRpb25zaGlwcyBzbyB3ZQorICAgIC8vIGNh
biByZWZlciB0byB0aGUgT2JzZXJ2ZWREb21haW4gdGFibGUgZW50cmllcy4KKyAgICBmb3IgKGF1
dG8mIHN0YXRpc3RpYyA6IHN0YXRpc3RpY3MpCisgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9u
c2hpcHMoc3RhdGlzdGljKTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3QKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTU0MSw3ICs2MjEsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50
Rm9yRG9tYWlucwogICAgIFNRTGl0ZVN0YXRlbWVudCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgbWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZGF0YVJl
Y29yZHNSZW1vdmVkID0gZGF0YVJlY29yZHNSZW1vdmVkICsgMSBXSEVSRSByZWdpc3RyYWJsZURv
bWFpbiBJTiAoIiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnMpLCAiKSIpKTsKICAgICBpZiAoZG9t
YWluc1RvVXBkYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwg
ZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jcmVtZW50U3RhdGlzdGljc0ZvckRvbWFp
bnMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNy
ZW1lbnRTdGF0aXN0aWNzRm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KQEAgLTU2MSw3ICs2NDEsNyBAQCB1bnNpZ25lZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVjdXJzaXZlbHlGaW5kTm9uUHJldmFs
ZW50RG9tYWlucwogICAgIFNRTGl0ZVN0YXRlbWVudCBmaW5kU3VicmVzb3VyY2VzKG1fZGF0YWJh
c2UsICJTRUxFQ1QgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLmZyb21Eb21haW5JRCBm
cm9tIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSBJTk5FUiBKT0lOIE9ic2VydmVkRG9t
YWlucyBPTiBPYnNlcnZlZERvbWFpbnMuZG9tYWluSUQgPSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20uZnJvbURvbWFpbklEIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/IEFORCBP
YnNlcnZlZERvbWFpbnMuaXNQcmV2YWxlbnQgPSAwIl9zKTsKICAgICBpZiAoZmluZFN1YnJlc291
cmNlcy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGZpbmRTdWJyZXNvdXJjZXMu
YmluZEludCgxLCBwcmltYXJ5RG9tYWluSUQpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVjdXJzaXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWlu
c1RoYXRSZWRpcmVjdGVkVG9UaGlzRG9tYWluIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJs
aWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVjdXJzaXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWluc1Ro
YXRSZWRpcmVjdGVkVG9UaGlzRG9tYWluIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRl
fXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTU3Niw3ICs2NTYsNyBA
QCB1bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVjdXJzaXZl
bHlGaW5kTm9uUHJldmFsZW50RG9tYWlucwogICAgIFNRTGl0ZVN0YXRlbWVudCBmaW5kVG9wRnJh
bWVzKG1fZGF0YWJhc2UsICJTRUxFQ1QgVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmZyb21E
b21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSBJTk5FUiBKT0lOIE9ic2Vy
dmVkRG9tYWlucyBPTiBPYnNlcnZlZERvbWFpbnMuZG9tYWluSUQgPSBUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c0Zyb20uZnJvbURvbWFpbklEIFdIRVJFIHRhcmdldERvbWFpbklEID0gPyBBTkQgT2Jz
ZXJ2ZWREb21haW5zLmlzUHJldmFsZW50ID0gMCJfcyk7CiAgICAgaWYgKGZpbmRUb3BGcmFtZXMu
cHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBmaW5kVG9wRnJhbWVzLmJpbmRJbnQo
MSwgcHJpbWFyeURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVk
aXJlY3RlZFRvVGhpc0RvbWFpbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJl
Y3RlZFRvVGhpc0RvbWFpbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC02MjksNyArNzA5LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNS
ZWRpcmVjdGVkVG9QcmV2YWwKICAgICBTUUxpdGVTdGF0ZW1lbnQgbWFya1ByZXZhbGVudFN0YXRl
bWVudChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBp
c1ByZXZhbGVudCA9IDEgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGJ1aWxkTGlzdChXVEY6Okl0ZXJh
dG9yUmFuZ2U8U3RkU2V0PHVuc2lnbmVkPjo6aXRlcmF0b3I+KHByZXZhbGVudER1ZVRvUmVkaXJl
Y3QuYmVnaW4oKSwgcHJldmFsZW50RHVlVG9SZWRpcmVjdC5lbmQoKSkpLCAiKSIpKTsKICAgICBp
ZiAobWFya1ByZXZhbGVudFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAg
IHx8IG1hcmtQcmV2YWxlbnRTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGly
ZWN0ZWRUb1ByZXZhbGVudCBmYWlsZWQgdG8gZXhlY3V0ZSwgZXJyb3IgbWVzc2FnZTogJXtwdWJs
aWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2
YWxlbnQgZmFpbGVkIHRvIGV4ZWN1dGUsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KIH0KQEAgLTc3NCwxMiArODU0LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWlu
JiYKIAogICAgIHN3aXRjaCAoY29va2llVHJlYXRtZW50Rm9yT3JpZ2luKHN1YkZyYW1lRG9tYWlu
KSkgewogICAgIGNhc2UgQ29va2llVHJlYXRtZW50UmVzdWx0OjpCbG9ja0FuZFB1cmdlOiB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBJVFBEZWJ1
ZywgIkNhbm5vdCBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3B1YmxpY31zIHNpbmNlIGl0cyBj
b29raWVzIGFyZSBibG9ja2VkIGluIHRoaXJkLXBhcnR5IGNvbnRleHRzIGFuZCBpdCBoYXMgbm90
IHJlY2VpdmVkIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmlyc3QtcGFydHkuIiwgc3ViRnJhbWVEb21h
aW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYo
ZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBJVFBEZWJ1ZywgIkNhbm5vdCBncmFudCBzdG9yYWdlIGFj
Y2VzcyB0byAle3ByaXZhdGV9cyBzaW5jZSBpdHMgY29va2llcyBhcmUgYmxvY2tlZCBpbiB0aGly
ZC1wYXJ0eSBjb250ZXh0cyBhbmQgaXQgaGFzIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9u
IGFzIGZpcnN0LXBhcnR5LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RS
ZXF1ZXN0QWNjZXNzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDb29r
aWVUcmVhdG1lbnRSZXN1bHQ6OkJsb2NrQW5kS2VlcDogewotICAgICAgICBSRUxFQVNFX0xPR19J
TkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJObyBuZWVkIHRvIGdyYW50
IHN0b3JhZ2UgYWNjZXNzIHRvICV7cHVibGljfXMgc2luY2UgaXRzIGNvb2tpZXMgYXJlIG5vdCBi
bG9ja2VkIGluIHRoaXJkLXBhcnR5IGNvbnRleHRzLiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2lu
Z0VuYWJsZWQoKSwgSVRQRGVidWcsICJObyBuZWVkIHRvIGdyYW50IHN0b3JhZ2UgYWNjZXNzIHRv
ICV7cHJpdmF0ZX1zIHNpbmNlIGl0cyBjb29raWVzIGFyZSBub3QgYmxvY2tlZCBpbiB0aGlyZC1w
YXJ0eSBjb250ZXh0cy4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNz
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC03OTAsMTkgKzg3MCwxOSBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmCiAKICAgICBhdXRvIHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIgPSBo
YXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KHN1YkZyYW1lU3RhdHVzLnNl
Y29uZCwgdG9wRnJhbWVEb21haW4pOwogICAgIGlmICh1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyID09
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
SU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIElUUERlYnVnLCAiQWJvdXQgdG8gYXNrIHRo
ZSB1c2VyIHdoZXRoZXIgdGhleSB3YW50IHRvIGdyYW50IHN0b3JhZ2UgYWNjZXNzIHRvICV7cHVi
bGljfXMgdW5kZXIgJXtwdWJsaWN9cyBvciBub3QuIiwgc3ViRnJhbWVEb21haW4uc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBJVFBEZWJ1
ZywgIkFib3V0IHRvIGFzayB0aGUgdXNlciB3aGV0aGVyIHRoZXkgd2FudCB0byBncmFudCBzdG9y
YWdlIGFjY2VzcyB0byAle3ByaXZhdGV9cyB1bmRlciAle3ByaXZhdGV9cyBvciBub3QuIiwgc3Vi
RnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nl
c3NTdGF0dXM6OlJlcXVpcmVzVXNlclByb21wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAodXNlcldhc1Byb21wdGVkRWFybGllciA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd246OlllcykKLSAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFi
bGVkKCksIElUUERlYnVnLCAiU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgdG8gJXtwdWJsaWN9
cyB1bmRlciAle3B1YmxpY31zLiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHRvcEZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJTdG9yYWdl
IGFjY2VzcyB3YXMgZ3JhbnRlZCB0byAle3ByaXZhdGV9cyB1bmRlciAle3ByaXZhdGV9cy4iLCBz
dWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0b3BGcmFtZURvbWFpbi5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIFNRTGl0ZVN0YXRlbWVudCBpbmNyZW1lbnRTdG9y
YWdlQWNjZXNzKG1fZGF0YWJhc2UsICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCB0aW1lc0Fj
Y2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJID0gdGltZXNBY2Nlc3NlZEFz
Rmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSArIDEgV0hFUkUgZG9tYWluSUQgPSA/Iik7
CiAgICAgaWYgKGluY3JlbWVudFN0b3JhZ2VBY2Nlc3MucHJlcGFyZSgpICE9IFNRTElURV9PSwog
ICAgICAgICB8fCBpbmNyZW1lbnRTdG9yYWdlQWNjZXNzLmJpbmRJbnQoMSwgc3ViRnJhbWVTdGF0
dXMuc2Vjb25kKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgaW5jcmVtZW50U3RvcmFnZUFjY2Vz
cy5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJs
aWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MgZmFpbGVkLCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTgyNSw3ICs5MDUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGlmIChjb29raWVU
cmVhdG1lbnRGb3JPcmlnaW4oZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSAhPSBDb29raWVU
cmVhdG1lbnRSZXN1bHQ6OkFsbG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
R19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJbVGVtcG9yYXJ5IGNv
bWJhdGliaWxpdHkgZml4XSBTdG9yYWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCBmb3IgJXtwdWJsaWN9
cyB1bmRlciBvcGVuZXIgcGFnZSBmcm9tICV7cHVibGljfXMsIHdpdGggdXNlciBpbnRlcmFjdGlv
biBpbiB0aGUgb3BlbmVkIHdpbmRvdy4iLCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Muc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgb3BlbmVyRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBJVFBEZWJ1
ZywgIltUZW1wb3JhcnkgY29tYmF0aWJpbGl0eSBmaXhdIFN0b3JhZ2UgYWNjZXNzIHdhcyBncmFu
dGVkIGZvciAle3ByaXZhdGV9cyB1bmRlciBvcGVuZXIgcGFnZSBmcm9tICV7cHJpdmF0ZX1zLCB3
aXRoIHVzZXIgaW50ZXJhY3Rpb24gaW4gdGhlIG9wZW5lZCB3aW5kb3cuIiwgZG9tYWluSW5OZWVk
T2ZTdG9yYWdlQWNjZXNzLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG9wZW5lckRvbWFpbi5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZN
b3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwg
V1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6
Tm8sIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCkBAIC04ODIsNyArOTYy
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbmRmYXRo
ZXJEYXRhRm9yRG9tYWlucyhjb25zdCBIYXNoU2UKICAgICBTUUxpdGVTdGF0ZW1lbnQgZG9tYWlu
c1RvVXBkYXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsIG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZl
ZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSAxIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluIElO
ICgiLCBkb21haW5zVG9TdHJpbmcoZG9tYWlucyksICIpIikpOwogICAgIGlmIChkb21haW5zVG9V
cGRhdGVTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBkb21haW5z
VG9VcGRhdGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFuZGZhdGhlckRhdGFGb3JEb21haW5zIGZhaWxlZCwg
ZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbmRmYXRoZXJEYXRh
Rm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KIH0KQEAgLTkwNSw3ICs5ODUsNyBAQCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVQcmV2YWxlbnRSZQogICAg
ICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkZWJ1Z01h
bnVhbFByZXZhbGVudFJlc291cmNlKCkpOwogICAgICAgICBzZXRQcmV2YWxlbnRSZXNvdXJjZShk
ZWJ1Z01hbnVhbFByZXZhbGVudFJlc291cmNlKCksIFJlc291cmNlTG9hZFByZXZhbGVuY2U6Okhp
Z2gpOwogICAgICAgICBwcmltYXJ5RG9tYWluc1RvQmxvY2sudW5jaGVja2VkQXBwZW5kKGRlYnVn
TWFudWFsUHJldmFsZW50UmVzb3VyY2UoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lORk8oSVRQ
RGVidWcsICJEaWQgc2V0ICV7cHVibGljfXMgYXMgcHJldmFsZW50IHJlc291cmNlIGZvciB0aGUg
cHVycG9zZXMgb2YgSVRQIERlYnVnIE1vZGUuIiwgZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JTkZPKElU
UERlYnVnLCAiRGlkIHNldCAle3ByaXZhdGV9cyBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgZm9yIHRo
ZSBwdXJwb3NlcyBvZiBJVFAgRGVidWcgTW9kZS4iLCBkZWJ1Z01hbnVhbFByZXZhbGVudFJlc291
cmNlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHByaW1h
cnlEb21haW5zVG9CbG9jazsKQEAgLTk4Myw3ICsxMDYzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0VXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJh
YmxlRG8KICAgICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LmJp
bmREb3VibGUoMiwgbW9zdFJlY2VudEludGVyYWN0aW9uLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudC5iaW5kVGV4dCgzLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAg
ICAgICB8fCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3RlcCgpICE9IFNR
TElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRVc2Vy
SW50ZXJhY3Rpb24sIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNl
dFVzZXJJbnRlcmFjdGlvbiwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDExLDcgKzEwOTEsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBS
ZWdpc3RyYWJsZQogICAgIGlmIChyZW1vdmVTdG9yYWdlQWNjZXNzLnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0sKICAgICAgICAgfHwgcmVtb3ZlU3RvcmFnZUFjY2Vzcy5iaW5kSW50KDEsIHRhcmdldFJl
c3VsdC5zZWNvbmQpICE9IFNRTElURV9PSwogICAgICAgICB8fCByZW1vdmVTdG9yYWdlQWNjZXNz
LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6bG9nVXNlckludGVyYWN0aW9uIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAl
e3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24gZmFpbGVkIHRvIGJp
bmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KQEAgLTEw
MjIsNyArMTEwMiw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsCiAKICAgICBpZiAobV9oYWRV
c2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgbV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3RlcCgp
ICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1f
aGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJs
aWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQgZmFpbGVk
LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOwogCiAgICAgICAgIGludCByZXNldFJlc3VsdCA9IG1faGFkVXNlckludGVyYWN0aW9u
U3RhdGVtZW50LnJlc2V0KCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJl
c2V0UmVzdWx0ID09IFNRTElURV9PSyk7CkBAIC0xMDYxLDcgKzExNDEsNyBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBSZWdpc3RyYWJsZQogICAgIGlmIChtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50
LmJpbmRJbnQoMSwgMSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdXBkYXRlUHJldmFsZW50
UmVzb3VyY2VTdGF0ZW1lbnQuYmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVf
T0sKICAgICAgICAgfHwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1f
dXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAl
e3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMDczLDcgKzExNTMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3Ry
YWJsZQogICAgICAgICBpZiAobV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQu
YmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IG1fdXBkYXRlVmVyeVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0g
U1FMSVRFX09LCiAgICAgICAgICAgICB8fCBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0
YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjptX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCBm
YWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX3Vw
ZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMTA5NCw3ICsxMTc0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4KICAgICBTUUxp
dGVTdGF0ZW1lbnQgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsIG1ha2VTdHJp
bmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gMSBXSEVSRSBkb21h
aW5JRCBJTiAoIiwgYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JSYW5nZTxTdGRTZXQ8dW5zaWduZWQ+
OjppdGVyYXRvcj4oZG9tYWlucy5iZWdpbigpLCBkb21haW5zLmVuZCgpKSksICIpIikpOwogICAg
IGlmIChkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAg
ICAgICB8fCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXREb21haW5zQXNQcmV2YWxl
bnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRE
b21haW5zQXNQcmV2YWxlbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExMTksNyArMTE5OSw3IEBAIGJvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVlRm9yRG9t
YWluKFdlYkNvcmU6OlNRTGl0CiAgICAgICAgIGludCByZXNldFJlc3VsdCA9IHByZWRpY2F0ZVN0
YXRlbWVudC5yZXNldCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNl
dFJlc3VsdCA9PSBTUUxJVEVfT0spOwogCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlZGljYXRlVmFsdWVGb3JEb21haW4gZmFp
bGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEx
NzgsNyArMTI1OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFiCiAgICAgCiAgICAgaWYgKG1f
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5n
KCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlLCBlcnJvciBtZXNzYWdlOiAle3B1Ymxp
Y31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExOTQs
OSArMTI3NCw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNl
dEdyYW5kZmF0aGVyZWQoY29uc3QgUmVnaXN0cmFibGVEb21hCiAgICAgZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9tYWluKTsKICAgICAKICAgICBpZiAobV91
cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9P
SwotICAgICAgICB8fCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQuYmluZFRleHQoMSwg
ZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZh
dGhlcmVkU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09L
CiAgICAgICAgIHx8IG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldEdyYW5k
ZmF0aGVyZWQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI4OSw3
ICsxMzY5LDcgQEAgc3RkOjpwYWlyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpBZGRlZFJlY29yZCwgdW5zaWduZWQ+IFJlc291cmNlTG8KICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5iaW5k
VGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFi
bGVEb21haW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbiBmYWlsZWQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4geyBBZGRl
ZFJlY29yZDo6Tm8sIDAgfTsKICAgICB9CkBAIC0xMzE2LDcgKzEzOTYsNyBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMoKQog
ICAgIG1fZGF0YWJhc2UuY2xlYXJBbGxUYWJsZXMoKTsKIAogICAgIGlmICghY3JlYXRlU2NoZW1h
KCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyBmYWlsZWQs
IGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMsIGRhdGFiYXNlIHBhdGg6ICV7cHVibGljfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJEYXRhYmFzZUNvbnRlbnRz
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMsIGRhdGFiYXNlIHBhdGg6ICV7cHJp
dmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0
b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzQ1LDcgKzE0MjUsNyBAQCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Q29va2llVHJlYXRtZW50UmVzdWx0IFJlc291cmNlTG9h
ZFN0YXRpc3RpYwogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNF
TEVDVCBpc1ByZXZhbGVudCwgaGFkVXNlckludGVyYWN0aW9uIEZST00gT2JzZXJ2ZWREb21haW5z
IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyIpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWlu
LnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNvb2tpZVRyZWF0bWVudEZvck9yaWdpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVz
c2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29va2llVHJlYXRtZW50Rm9yT3JpZ2lu
IGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAgICAgCkBAIC0xNDk3LDcgKzE1NzcsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGlyZWRVc2VySW50ZXJhY3Rpb25zKCkKIAogICAgIGlm
IChjbGVhckV4cGlyZWRJbnRlcmFjdGlvbi5zdGVwKCkgIT0gU1FMSVRFX0RPTkUKICAgICAgICAg
fHwgcmVtb3ZlU3RvcmFnZUFjY2Vzcy5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNsZWFyRXhwaXJlZFVzZXJJbnRlcmFjdGlvbnMgc3RhdGVtZW50KHMpIGZh
aWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGlyZWRVc2Vy
SW50ZXJhY3Rpb25zIHN0YXRlbWVudChzKSBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQpAQCAtMTUxNiw3ICsxNTk2LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJHcmFuZGZhdGhlcmlu
ZyhWZWN0b3I8dW5zaWduZWQ+JiYKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChjbGVh
ckdyYW5kZmF0aGVyaW5nU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJHcmFuZGZhdGhlcmluZyBmYWlsZWQg
dG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJH
cmFuZGZhdGhlcmluZyBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogfQpAQCAtMTU5Niw3ICsxNjc2LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKQogICAg
IFNRTGl0ZVN0YXRlbWVudCByZWNvcmRzVG9QcnVuZShtX2RhdGFiYXNlLCAiU0VMRUNUIGRvbWFp
bklEIEZST00gT2JzZXJ2ZWREb21haW5zIE9SREVSIEJZIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNQ
cmV2YWxlbnQsIGxhc3RTZWVuIExJTUlUID8iKTsKICAgICBpZiAocmVjb3Jkc1RvUHJ1bmUucHJl
cGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCByZWNvcmRzVG9QcnVuZS5iaW5kSW50KDEs
IGNvdW50TGVmdFRvUHJ1bmUpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31z
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTYxMCw3ICsxNjkwLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0
aWNzSWZOZWVkZWQoKQogICAgIFNRTGl0ZVN0YXRlbWVudCBwcnVuZUNvbW1hbmQobV9kYXRhYmFz
ZSwgbWFrZVN0cmluZygiREVMRVRFIGZyb20gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGRvbWFpbklE
IElOICgiLCBsaXN0VG9QcnVuZSwgIikiKSk7CiAgICAgaWYgKHBydW5lQ29tbWFuZC5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHBydW5lQ29tbWFuZC5zdGVwKCkgIT0gU1FMSVRF
X0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlz
dGljc0lmTmVlZGVkIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3By
aXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2MjMsNyArMTcw
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUxh
c3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgaWYgKG1fdXBkYXRlTGFzdFNlZW5T
dGF0ZW1lbnQuYmluZERvdWJsZSgxLCBsYXN0U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVl
KCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50LmJp
bmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdXBk
YXRlTGFzdFNlZW5TdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVMYXN0U2VlbiBmYWlsZWQgdG8gYmluZCwg
ZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlTGFzdFNlZW4g
ZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTY2Miw2ICsxNzQyLDIyIEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBSZWdpc3RyCiAgICAgc2V0UHJldmFsZW50UmVzb3VyY2UoZG9tYWluLCBSZXNvdXJjZUxvYWRQ
cmV2YWxlbmNlOjpWZXJ5SGlnaCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZChjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBpbnQgdmFsdWUpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBpZiAobV91cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQuYmluZElu
dCgxLCB2YWx1ZSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlRGF0YVJlY29yZHNS
ZW1vdmVkU3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBk
YXRlRGF0YVJlY29yZHNSZW1vdmVkIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3By
aXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCByZXNl
dFJlc3VsdCA9IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LnJlc2V0KCk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBmMWQ1NjU1ZGVlYmNk
YjA0N2NkZDk2ZDJlOTM1NjM0Y2VhYzAxZDNhLi5lYTdlNjQ5ZmZmNWQxNmFhODRhZTFiZTA1MjZi
NmM1OGM1N2QyZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
JiwgV29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5nJiBzdG9y
YWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdm9pZCBwb3B1bGF0ZUZy
b21NZW1vcnlTdG9yZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUmKTsK
LQorICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTEw
NSwxNiArMTA1LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgU2Vjb25kcykgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgdm9pZCBt
ZXJnZVN0YXRpc3RpYyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CisgICAgdm9pZCBt
ZXJnZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik7CiAgICAgdm9pZCBjbGVhckRhdGFiYXNlQ29udGVudHMoKTsKICAgICBib29sIGluc2Vy
dE9ic2VydmVkRG9tYWluKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICB2b2lk
IGluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYp
OwogICAgIGJvb2wgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudCYsIHVuc2lnbmVkIGRvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4pOwogICAgIGJvb2wgcmVsYXRpb25zaGlwRXhpc3RzKFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCYsIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdERvbWFpbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc2Vjb25kRG9tYWluKSBjb25zdDsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4g
ZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgYm9vbCBjb25maXJtRG9tYWluRG9lc05vdEV4aXN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3Q7Ci0jZW5kaWYKKyAgICBib29sIGRvbWFpbkV4aXN0cyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlTGFzdFNlZW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBXYWxsVGltZSk7CisgICAgdm9pZCB1cGRhdGVEYXRhUmVjb3Jkc1JlbW92
ZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBpbnQpOwogICAgIHZvaWQgc2V0VXNlckludGVy
YWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24s
IFdhbGxUaW1lKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2Nr
QW5kRGVsZXRlQ29va2llc0ZvcigpIGNvbnN0OwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4gZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcigpIGNvbnN0OwpAQCAtMTc1LDYgKzE3
Niw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1faW5zZXJ0VG9w
TGV2ZWxEb21haW5TdGF0ZW1lbnQ7CiAgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQgbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQ7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50IG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50OworICAg
IFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9t
YWluc0V4aXN0c1N0YXRlbWVudDsKICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV90b3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c1RvOwogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50IG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0V4aXN0czsKICAgICBXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQgbV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb207CkBAIC0xOTEsNiArMTkz
LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUV4aXN0czsKICAgICBXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50OwogICAgIFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50OworICAgIG11dGFi
bGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3Rh
dGVtZW50OwogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3VwZGF0ZVByZXZhbGVudFJl
c291cmNlU3RhdGVtZW50OwogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1f
aXNQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDY1Yjg3ODAz
MDdhYjU2YjNiNGM3Zjg3YmYzMjhlNTMzNDk1M2I3YjAuLjZjZWJiMTBhMGQ4NzcyYmUwNmZhNGVk
OTMzODg5NjllYjFiODcxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC02OTAsMTYgKzY5MCw2IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxlCiAgICAgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKGRvbWFpbnNUb0Js
b2NrLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Ondhc0Fj
Y2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24oY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgY3VycmVudCwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgdXBkYXRl
ZCkgY29uc3QKLXsKLSAgICBpZiAoIWN1cnJlbnQuaGFkVXNlckludGVyYWN0aW9uICYmICF1cGRh
dGVkLmhhZFVzZXJJbnRlcmFjdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0
byBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IHN0ZDo6bWF4KGN1cnJlbnQubW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIHVwZGF0ZWQubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUpOwotCi0gICAgcmV0dXJuIHVwZGF0ZWQubGFzdFNlZW4gPD0gbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWUgKyAyNF9oOwotfQotCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiYmIHN0YXRpc3RpY3MpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC03
MDgsMTEgKzY5OCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpt
ZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpCiAgICAgICAgIGF1dG8gcmVz
dWx0ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKHN0YXRpc3RpYy5yZWdpc3RyYWJs
ZURvbWFpbiwgWyZzdGF0aXN0aWNdIHsKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHN0YXRp
c3RpYyk7CiAgICAgICAgIH0pOwotICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Ci0g
ICAgICAgICAgICBpZiAod2FzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlv
bihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCBzdGF0aXN0aWMpKQotICAgICAgICAgICAgICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlcklu
dGVyYWN0aW9uKys7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1lcmdlKHN0YXRpc3RpYyk7Ci0gICAgICAgIH0KICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaAppbmRleCA4NzllMWFmY2ZiODYyMjk3NjQ2YjUwMDgwNmZmYzRmOWEwYWEwMzQ3Li42ODA1
NGE1YzIxNDNkNjZlOGQ4NTU2NTRmYTQ5NjljM2UyMmIyZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6S2V5ZWRFbmNvZGVyPiBjcmVhdGVF
bmNvZGVyRnJvbURhdGEoKSBjb25zdDsKICAgICB2b2lkIG1lcmdlV2l0aERhdGFGcm9tRGVjb2Rl
cihXZWJDb3JlOjpLZXllZERlY29kZXImKTsKIAotICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNzKFZl
Y3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGlj
cyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBw
cm9jZXNzU3RhdGlzdGljcyhjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmKT4mKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKQEAgLTExNyw3ICsxMTcsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgaGFzSGFkVW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3Q7CiAgICAg
Ym9vbCBzaG91bGRSZW1vdmVBbGxXZWJzaXRlRGF0YUZvcihSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
JiwgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nKSBjb25zdDsKICAgICBib29sIHNo
b3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGJvb2wg
c2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykgY29uc3Q7Ci0gICAgYm9vbCB3YXNBY2Nlc3Nl
ZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHVwZGF0ZWQpIGNv
bnN0OwogICAgIHZvaWQgaW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMoSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmV2YWxl
bnRSZXNvdXJjZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgUmVzb3VyY2VMb2FkUHJldmFsZW5j
ZSk7CiAgICAgdW5zaWduZWQgcmVjdXJzaXZlbHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRpcmVj
dGVkVG9UaGlzRG9tYWluKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBIYXNoU2V0PFJl
ZGlyZWN0ZWRUb0RvbWFpbj4mLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA2ZjYxZWQz
NDNkZTI2NmFhMzVmOWVjMGRhNzQyMTEwMTkzNjJhZmRhLi45OWE2NzEwNjY2OTZmNGZkMjg2ZmNk
N2QyMDc1YjRlNzY1OTUzZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCkBAIC0xMDgsNiArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGFz
c2lmeVByZXZhbGVudFJlc291cmNlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3Jh
Z2VJZk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVs
eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CiAgICAgdm9p
ZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDJi
YmVkY2I5NjM3ZmUzNjFmYzMwOGVjZTQ2OTY5OTc0NDE5ZmI2OGMuLjZlZDkzMzkzY2NjMjk1YmVk
Y2EzZWU0MDJmZmE4ZmViZWY0MGU1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNjQsMTkgKzI2NCwxNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVj
dG9yPFJlc291cgogICAgIC8vIGNvbWluZyBmcm9tIElQQy4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyBvbmx5IGNvbnRhaW5zIHN0cmluZ3Mgd2hpY2ggYXJlIHNhZmUgdG8gbW92ZSB0byBvdGhlciB0
aHJlYWRzIGFzIGxvbmcKICAgICAvLyBhcyBub2JvZHkgb24gdGhpcyB0aHJlYWQgaG9sZHMgYSBy
ZWZlcmVuY2UgdG8gdGhvc2Ugc3RyaW5ncy4KICAgICBwb3N0VGFzayhbdGhpcywgc3RhdGlzdGlj
cyA9IFdURk1vdmUoc3RhdGlzdGljcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9zdGF0
aXN0aWNzU3RvcmUgfHwgIWlzPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1f
c3RhdGlzdGljc1N0b3JlKSkKKyAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvJiBtZW1vcnlTdG9yZSA9IGRvd25jYXN0PFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKTsKLSAg
ICAKLSAgICAgICAgbWVtb3J5U3RvcmUubWVyZ2VTdGF0aXN0aWNzKFdURk1vdmUoc3RhdGlzdGlj
cykpOworICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+bWVyZ2VTdGF0aXN0aWNzKFdURk1vdmUo
c3RhdGlzdGljcykpOwogCiAgICAgICAgIC8vIFdlIGNhbiBjYW5jZWwgYW55IHBlbmRpbmcgcmVx
dWVzdCB0byBwcm9jZXNzIHN0YXRpc3RpY3Mgc2luY2Ugd2UncmUgZG9pbmcgaXQgc3luY2hyb25v
dXNseSBiZWxvdy4KLSAgICAgICAgbWVtb3J5U3RvcmUuY2FuY2VsUGVuZGluZ1N0YXRpc3RpY3NQ
cm9jZXNzaW5nUmVxdWVzdCgpOworICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2FuY2VsUGVu
ZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdCgpOwogCiAgICAgICAgIC8vIEZpcmUgYmVm
b3JlIHByb2Nlc3Npbmcgc3RhdGlzdGljcyB0byBwcm9wYWdhdGUgdXNlciBpbnRlcmFjdGlvbiBh
cyBmYXN0IGFzIHBvc3NpYmxlIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCi0gICAgICAgIG1lbW9y
eVN0b3JlLnVwZGF0ZUNvb2tpZUJsb2NraW5nKFtdKCkgeyB9KTsKLSAgICAgICAgbWVtb3J5U3Rv
cmUucHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgICAgICBtX3N0YXRpc3Rp
Y3NTdG9yZS0+dXBkYXRlQ29va2llQmxvY2tpbmcoW10oKSB7IH0pOworICAgICAgICBtX3N0YXRp
c3RpY3NTdG9yZS0+cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogICAgIH0pOwog
fQogCkBAIC01ODMsNiArNTgxLDM1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluCiAgICAgICAg
IHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQor
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNGb3JU
ZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50
ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5k
ZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25l
ZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgcG9z
dFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21h
aW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgbGFzdFNlZW4sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1By
ZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IGlmIChtX3N0YXRpc3RpY3NTdG9yZSkgeworICAgICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyBzdGF0aXN0aWMoZG9tYWluKTsKKyAgICAgICAgICAgIHN0YXRpc3RpYy5sYXN0U2VlbiA9
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0U2Vlbi5zZWNvbmRzKCkpOworICAgICAgICAg
ICAgc3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiA9IGhhZFVzZXJJbnRlcmFjdGlvbjsKKyAg
ICAgICAgICAgIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLnNlY29uZHMoKSk7
CisgICAgICAgICAgICBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCA9IGlzR3JhbmRmYXRoZXJlZDsK
KyAgICAgICAgICAgIHN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlID0gaXNQcmV2YWxlbnQ7
CisgICAgICAgICAgICBzdGF0aXN0aWMuaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UgPSBpc1ZlcnlQ
cmV2YWxlbnQ7CisgICAgICAgICAgICBzdGF0aXN0aWMuZGF0YVJlY29yZHNSZW1vdmVkID0gZGF0
YVJlY29yZHNSZW1vdmVkOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRvcEZyYW1l
RG9tYWluLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+IHRvcEZyYW1lRG9tYWluczsKKyAgICAgICAgICAgICAgICB0b3BGcmFtZURvbWFpbnMu
YWRkKHRvcEZyYW1lRG9tYWluKTsKKyAgICAgICAgICAgICAgICBzdGF0aXN0aWMuc3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWlucyA9IFdURk1vdmUodG9wRnJhbWVEb21haW5zKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRp
c3RpY3M7CisgICAgICAgICAgICBzdGF0aXN0aWNzLmFwcGVuZChXVEZNb3ZlKHN0YXRpc3RpYykp
OworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPm1lcmdlU3RhdGlzdGljcyhXVEZNb3Zl
KHN0YXRpc3RpY3MpKTsKKyAgICAgICAgfQorICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KICAgICAKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
aW5kZXggMmM3ZDM3OGIwNDNjOTVlMTY1NTg3ZTY2YTVmNzQzZTBmODkyNjZjMS4uMzY0OTgxMzY4
M2E5YjgyZTJkNjQ0OWUwZTQ1YzA3NDgxZDZjYjIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTI5LDYgKzEyOSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJG
cmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVy
YWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZh
dGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQg
ZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNl
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IGY1MmY0MGZiZGNkNmNmOTM5M2JlOTA2ZDRiMGMyNWVkMDE0Y2Mx
ZjcuLjM3OGQ5ZDI0NGE0ZGE5MWU5YTQ1NDYxMjc4YTVmNWE3MDNkZTUyM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC05NzQsNiAr
OTc0LDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21hCiAgICAgfQogfQogCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVy
YWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZh
dGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQg
ZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5tZXJnZVN0YXRpc3RpY0ZvclRlc3Rpbmco
ZG9tYWluLCB0b3BGcmFtZURvbWFpbiwgbGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNW
ZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAppbmRleCA5MGNmNzMyZjcyYjM5MThmNjZiY2QzNWQyMDQ3MjkyYTAzNjAxM2Q3Li4zYTYy
NTZmMmY0OGZhZmJmNmE3YmRjYWRlMjA4YmJmMjQ4NzkxNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNDIsNiArMjQyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFM
OjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2VlbihQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
U2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxl
bnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkKFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3QoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhNzc2NjNlN2NmNjQxMzhiNjc5MTgwYjFjOWFjNjRi
NDczODljNzFiLi4xZWY4ZmJjMGRhYzE0ZjM2Yjc3ZmM3NTkxZTI0NGI5ZTMyNTkxODdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTk0LDYgKzk0LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogICAgIElzVmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluKSAt
PiAoYm9vbCBpc1ZlcnlQcmV2YWxlbnQpIEFzeW5jCiAgICAgU2V0QWdlQ2FwRm9yQ2xpZW50U2lk
ZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25hbDxTZWNvbmRzPiBzZWNv
bmRzKSAtPiAoKSBBc3luYwogICAgIFNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIFNlY29uZHMgc2Vj
b25kcykgLT4gKCkgQXN5bmMKKyAgICBNZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFp
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFNlY29uZHMgbGFz
dFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlz
VmVyeVByZXZhbGVudCwgdWludDY0X3QgZGF0YVJlY29yZHNSZW1vdmVkKSAtPiAoKSBBc3luYwog
ICAgIFNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKICAg
ICBIYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4gKGJvb2wgaGFkVXNlckludGVyYWN0
aW9uKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggOTYwZjlmYjBmMjJiOWVjODA5ZTY1MWJlYjll
NWE3NjMwYzZlZDk1NC4uMjE0YjEwOGQyNDQ2N2I2ZWZhNjdmNjk0MzRjNzg0MjZmM2QzMmUyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCkBAIC0xMTksNiArMTE5LDE3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsCiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWVy
Z2VTdGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4sIGRvdWJsZSBsYXN0U2VlbiwgYm9v
bCBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBi
b29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxl
bnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc01lcmdlU3RhdGlzdGljRnVuY3Rpb24gY29tcGxldGlvbkhhbmRs
ZXIpCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5tZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKHRvcEZyYW1lRG9tYWluKS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgbGFzdFNlZW4gfSwgaGFk
VXNlckludGVyYWN0aW9uLCBTZWNvbmRzIHsgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiB9LCBp
c0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRz
UmVtb3ZlZCwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihjb250ZXh0KTsKKyNlbmRpZgorfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApp
bmRleCBjY2Y1OTEzODlmYjkxNWYyMzUxNmQzMDQ4YzllMjdkY2MxOTdlMzI1Li5mMmExNzgyOTZl
YTc5ZWI0ZWY1NTdhYjBlMDc4YjlhZDZlYTlhYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtNDksNiArNDks
OCBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlV2l0aENvbXBsZXRpbwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5j
dGlvbiBjb21wbGV0aW9uSGFuZGxlcik7ICAgIAogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdFNlZW4o
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgZG91
YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NM
YXN0U2VlbkZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0Z1bmN0aW9uKSh2b2lkKiBmdW5j
dGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc01lcmdlU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFzdFNl
ZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5
UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQ
T1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNl
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJv
b2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAo
KldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2VGdW5jdGlv
bikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDMxYTcyNTdjMTAx
YTEwMDU3MTI4YjY4NzViZDQzYjcwNmMzNGU4NTMuLjM4MzBiMjUyYzFiNDhkYTc0MWE4NGI4NTlk
Yzg2ZTMxNDA4NWNkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTM1LDYgKzUzNSwxMSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldExhc3RTZWVuKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGxhc3RT
ZWVuKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVz
ZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlz
R3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVu
c2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6Ok1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhzZXNzaW9uSUQsIHJlc291cmNl
RG9tYWluLCB0b3BGcmFtZURvbWFpbiwgbGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNW
ZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA2NDcx
M2FiMWEwY2ZkMjZkZjJmODYxZGIxYTRhZTdhZjM4NmRiOTZmLi4yZDZhZGJlM2JhM2Q1ZmNlNWM5
NmFlZjYzYWVmYmNmNmVmMmNkMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4o
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNv
bmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29s
IGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNS
ZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0QWdlQ2Fw
Rm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAo
UEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA2OTM1NWQ3OTdjMjVjOGJjMjAxOTlmNzdhZDA4NjU0
MDA1MDk2NGU0Li42ZDU1ODQ1MmZhNDllMWExNWM1YjIzNTFjMDQxOTZlYjExNTNlZTFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcApAQCAtMTUzMyw2ICsxNTMzLDIxIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6c2V0TGFzdFNlZW4oY29uc3QgVVJMJiB1cmwsIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlv
bkhhCiAgICAgfQogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9y
VGVzdGluZyhjb25zdCBVUkwmIHVybCAsIGNvbnN0IFVSTCYgdG9wRnJhbWVVcmwsIFNlY29uZHMg
bGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29s
IGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKHVybC5wcm90
b2NvbElzQWJvdXQoKSB8fCB1cmwuaXNFbXB0eSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVn
YXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewor
ICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzcygp
KQorICAgICAgICAgICAgcHJvY2Vzcy0+bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKG1fc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB7IHRvcEZyYW1lVXJsIH0sIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24s
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQs
IGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCBbcHJvY2Vzc1Bvb2wsIGNhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAg
fQorfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJh
Y2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCmluZGV4IDhhNWZlYmE4M2I3ZGEwZGNjNzRiNzhjNWEwMTkyYzBmN2Y1MmVjN2YuLmFhNmQ2
ZmUwZThiYzJkOWJjZDJiODNkOTFmNmRiMDljMzcyY2E4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE2
Miw2ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VJVFBEYXRhYmFzZShib29sKTsK
ICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgVVJMJiwgU2Vjb25kcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9y
VGVzdGluZyhjb25zdCBVUkwmLCBjb25zdCBVUkwmIHRvcEZyYW1lVXJsLCBTZWNvbmRzIGxhc3RT
ZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVy
YWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1Zl
cnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2Vy
ZVNjYW5uZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNl
dElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KGJvb2wsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE0YjZiNjRkMzAxY2Y2NzM4YzI3NjQ5OGNhYTA2YjY4
YmIyNTdlMmUuLjBlNjk1ODMzNGUyMTAwZjkzNDZlNzc1YTdmNjYyNjFkZWU5MGY5MjcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OSBAQAorMjAxOS0xMC0wMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNv
bT4KKworICAgICAgICBVcGRhdGVkIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBhcmUgbmV2ZXIg
bWVyZ2VkIGludG8gdGhlIFNRTGl0ZSBEYXRhYmFzZSBiYWNrZW5kICgyMDIzNzIpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMzcyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NTg1NDU0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0aW5nIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIG1l
cmdlU3RhdGlzdGljcygpIGZ1bmN0aW9uIG9mIHRoZSAKKyAgICAgICAgU1FMaXRlIGJhY2tlbmQu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRp
c3RpY3NNZXJnZVN0YXRpc3RpYyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3Rp
Y3NDYWxsRGlkU2V0TWVyZ2VTdGF0aXN0aWNDYWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6ZGlkTWVyZ2VTdGF0aXN0aWMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaDoKKwogMjAxOS0wOS0zMCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgW3Jlc3VsdHMud2Via2l0Lm9yZyBUaW1lbGluZV0gTmV3
IGF4aXMgc3R5bGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGEwMWQ0ZmI1MzkwZDRh
ZDRmYzU2ZjZkZjg2NzM2OWJmOWM2NmE2OTMuLjQyYWFkNTRlMzExM2EzODNmNzM0OTE3NzQxNTIx
N2NlZDk5MGQ0YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjk4LDYgKzI5OCw3
IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NEZWJ1Z01v
ZGUoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShET01TdHJpbmcgaG9zdE5h
bWUsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTGFz
dFNlZW4oRE9NU3RyaW5nIGhvc3ROYW1lLCBkb3VibGUgc2Vjb25kcywgb2JqZWN0IGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhET01TdHJp
bmcgaG9zdE5hbWUsIERPTVN0cmluZyB0b3BGcmFtZURvbWFpbiwgZG91YmxlIGxhc3RTZWVuLCBi
b29sZWFuIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b24sIGJvb2xlYW4gaXNHcmFuZGZhdGhlcmVkLCBib29sZWFuIGlzUHJldmFsZW50LCBib29sZWFu
IGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgbG9uZyBkYXRhUmVjb3Jkc1JlbW92ZWQsIG9iamVj
dCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFuIHZhbHVlLCBvYmplY3QgY29tcGxldGlv
bkhhbmRsZXIpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShE
T01TdHJpbmcgaG9zdE5hbWUsIGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgYm9vbGVhbiBpc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShET01TdHJpbmcg
aG9zdE5hbWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA5YzEwYjQwODRkOWJmM2Q5ZmZkNGJkMDdh
NWViNWZmNDNlY2Q5NGQ4Li4wMWI3NTYyZDFjMGM4ZDEyMzY5MzQwNjcxZmMwMmUzZDdlNmFlMTkz
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzU2LDYgKzM1NiwxMSBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJp
bmdSZWYgbQogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0TGFzdFNl
ZW5DYWxsYmFjaygpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZE1lcmdlU3RhdGlz
dGljIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdl
U3RhdGlzdGljQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldFByZXZh
bGVudFJlc291cmNlIikpIHsKICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERp
ZFNldFByZXZhbGVudFJlc291cmNlQ2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDgyZGI2NzQyOTk5
Yzc3ZGJiY2ZjMzUyNDY1NDA2NTc0YmIzNjM1MTcuLjAxMTA0YWNmODRiYWIxMjdlNTE3M2QzNzkz
MmU0Mjk5YWZhM2MxNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNzMyLDYgKzczMiw3IEBAIGVudW0gewogICAg
IFNldFN0YXRpc3RpY3NEZWJ1Z01vZGVDYWxsYmFja0lELAogICAgIFNldFN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZUNhbGxiYWNrSUQsCiAgICAgU2V0U3RhdGlzdGljc0xh
c3RTZWVuQ2FsbGJhY2tJRCwKKyAgICBTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNDYWxsYmFj
a0lELAogICAgIFNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrSUQsCiAgICAg
U2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrSUQsCiAgICAgU2V0U3Rh
dGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkNhbGxiYWNrSUQsCkBAIC0xNDUzLDYgKzE0NTQs
NTcgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldExhc3RTZWVuQ2FsbGJh
Y2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc0xhc3RTZWVuQ2Fs
bGJhY2tJRCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc01lcmdlU3RhdGlz
dGljKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbiwgZG91
YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBi
b29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBKU1ZhbHVl
UmVmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKFNl
dFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0NhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsK
KworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9y
PFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lIikpKTsKKyAgICB2YWx1
ZXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9zdE5hbWUpKSk7
CisgICAgCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiVG9wRnJhbWVEb21haW4iKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyh0b3BGcmFtZURvbWFpbikpKTsKKworICAgIGtleXMuYXBw
ZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxhc3RTZWVuIikpKTsK
KyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEb3VibGVDcmVhdGUobGFzdFNlZW4pKSk7CisK
KyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJI
YWRVc2VySW50ZXJhY3Rpb24iKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUoaGFkVXNlckludGVyYWN0aW9uKSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
biIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLRG91YmxlQ3JlYXRlKG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb24pKSk7CisKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc0dyYW5kZmF0aGVyZWQiKSkpOworICAgIHZhbHVlcy5h
cHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNHcmFuZGZhdGhlcmVkKSkpOworCisgICAg
a2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNQcmV2
YWxlbnQiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNQ
cmV2YWxlbnQpKSk7CisKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJJc1ZlcnlQcmV2YWxlbnQiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRv
cHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNWZXJ5UHJldmFsZW50KSkpOworCisgICAga2V5cy5hcHBl
bmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRGF0YVJlY29yZHNSZW1v
dmVkIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tVSW50NjRDcmVhdGUoZGF0YVJl
Y29yZHNSZW1vdmVkKSkpOworCisgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdLZXlzKGtleXMu
c2l6ZSgpKTsKKyAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdWYWx1ZXModmFsdWVzLnNpemUoKSk7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZh
bHVlc1tpXS5nZXQoKTsKKyAgICB9CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlz
dGljc01lcmdlU3RhdGlzdGljIikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4g
bWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLRGljdGlvbmFyeUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwg
cmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5zaXplKCkpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5j
aHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQorCit2b2lkIFRl
c3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0TWVyZ2VTdGF0aXN0aWNDYWxsYmFjaygpCit7
CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWND
YWxsYmFja0lEKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApp
bmRleCA0OWU1ZmYwODc2MDY3OWY4ZjczYjU1Y2VkOWZmYzc1NTBhMWQ2YmRmLi5mMTcwMDEyOTgz
MWI2Zjk0NzA3NjJmMDMwZmVjZDcwMWM0ZDNiYTNiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMzk2LDYgKzM5Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2VG
b3JEZWJ1Z01vZGVDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0xhc3RTZWVuKEpT
U3RyaW5nUmVmIGhvc3ROYW1lLCBkb3VibGUgc2Vjb25kcywgSlNWYWx1ZVJlZiBjb21wbGV0aW9u
SGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldExhc3RTZWVuQ2FsbGJhY2so
KTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhKU1N0cmluZ1JlZiBob3N0
TmFtZSwgSlNTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4sIGRvdWJsZSBsYXN0U2VlbiwgYm9vbCBo
YWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29s
IGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQs
IHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdlU3RhdGlzdGljQ2FsbGJhY2so
KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBo
b3N0TmFtZSwgYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAg
dm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFByZXZhbGVudFJlc291cmNlQ2FsbGJhY2soKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoSlNTdHJpbmdSZWYgaG9z
dE5hbWUsIGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlN2RiZTM4NzdkYzEyZjdl
Mjg2YTMzMmU3MThjNGI1MzRkOWNhMDM3Li4wYmQ3NzYxYmJmYzU1MDRlZjIwNTlkOWExZjNiNDQ3
NTc2MDc0ZTBiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApA
QCAtMzI2MSw2ICszMjYxLDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NM
YXN0U2VlbihXS1N0cmluZ1JlZiBob3N0LCBkb3VibGUgc2Vjb25kcykKICAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uLT5kaWRTZXRMYXN0U2VlbigpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYg
dG9wRnJhbWVEb21haW4sIGRvdWJsZSBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24s
IGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwg
Ym9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIGludCBkYXRhUmVjb3Jkc1Jl
bW92ZWQpCit7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQo
KnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3Rp
YyhUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpLCBob3N0LCB0b3BGcmFtZURvbWFp
biwgbGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
biwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVj
b3Jkc1JlbW92ZWQsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJh
Y2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJl
bnRJbnZvY2F0aW9uLT5kaWRNZXJnZVN0YXRpc3RpYygpOworfQorCiB2b2lkIFRlc3RDb250cm9s
bGVyOjpzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdCwgYm9v
bCB2YWx1ZSkKIHsKICAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4
dCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggZmQx
YzUyYWE0MGFmMjZkNGRkMGQ4NjJhMjAzOTY2ODdjMjY4NzIwZi4uNmMyZDJkODg2ZTAzYjc3YjYy
YmU1NTM4YTIyYjliMGU4ZDRjNDFlNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaApAQCAtMjEwLDYgKzIxMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tTdHJpbmdSZWYgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0
U3RhdGlzdGljc0xhc3RTZWVuKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBkb3VibGUgc2Vjb25kcyk7
CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoV0tTdHJpbmdSZWYgaG9zdCwg
V0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4sIGRvdWJsZSBsYXN0U2VlbiwgYm9vbCBoYWRVc2Vy
SW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3Jh
bmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIGludCBk
YXRhUmVjb3Jkc1JlbW92ZWQpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRp
c3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFs
dWUpOwogICAgIFN0cmluZyBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBjNGQxOGFiZDlhNWM0YWMzM2Jm
MmFlMDI2YzI4ZmIwZTYyMmUzYTczLi4yZjhiMzA2ZTJjOGM4NzNmZmQzMTc5NjFjODEyYzViYzg4
MmI2M2NkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAt
MTEwMCw2ICsxMTAwLDM2IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KICAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyIpKSB7CisgICAg
ICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlw
ZUlEKCkpOworCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkg
PSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWUiKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiB0b3BGcmFtZURvbWFpbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlRvcEZyYW1lRG9tYWluIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbGFzdFNlZW5LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJMYXN0U2VlbiIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhhZFVzZXJJ
bnRlcmFjdGlvbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhh
ZFVzZXJJbnRlcmFjdGlvbiIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJNb3N0UmVjZW50VXNlckludGVyYWN0aW9uIikpOworICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gaXNHcmFuZGZhdGhlcmVkS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNHcmFuZGZhdGhlcmVkIikpOworICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gaXNQcmV2YWxlbnRLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJJc1ByZXZhbGVudCIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGlzVmVyeVByZXZhbGVudEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIklzVmVyeVByZXZhbGVudCIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGRhdGFSZWNvcmRzUmVtb3ZlZEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkRhdGFSZWNvcmRzUmVtb3ZlZCIpKTsKKyAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHRpbWVzQWNjZXNzZWRGaXJzdFBhcnR5SW50ZXJhY3Rpb25LZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaW1lc0FjY2Vzc2VkRmlyc3RQ
YXJ0eUludGVyYWN0aW9uIikpOworCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3Rh
dGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJv
ZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQoKSkpOworICAgICAgICBXS1N0cmluZ1JlZiB0
b3BGcmFtZURvbWFpbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdG9wRnJhbWVEb21haW5LZXkuZ2V0KCkp
KTsKKyAgICAgICAgV0tEb3VibGVSZWYgbGFzdFNlZW4gPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGxhc3RT
ZWVuS2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiBoYWRVc2VySW50ZXJhY3Rpb24g
PSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCBoYWRVc2VySW50ZXJhY3Rpb25LZXkuZ2V0KCkpKTsKKyAgICAg
ICAgV0tEb3VibGVSZWYgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiA9IHN0YXRpY19jYXN0PFdL
RG91YmxlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFy
eSwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbktleS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xl
YW5SZWYgaXNHcmFuZGZhdGhlcmVkID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaXNHcmFuZGZhdGhlcmVk
S2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiBpc1ByZXZhbGVudCA9IHN0YXRpY19j
YXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURp
Y3Rpb25hcnksIGlzUHJldmFsZW50S2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiBp
c1ZlcnlQcmV2YWxlbnQgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdl
dEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBpc1ZlcnlQcmV2YWxlbnRLZXkuZ2V0
KCkpKTsKKyAgICAgICAgV0tVSW50NjRSZWYgZGF0YVJlY29yZHNSZW1vdmVkID0gc3RhdGljX2Nh
c3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCBkYXRhUmVjb3Jkc1JlbW92ZWRLZXkuZ2V0KCkpKTsKKyAgICAgICAgCisgICAgICAg
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMo
aG9zdE5hbWUsIHRvcEZyYW1lRG9tYWluLCBXS0RvdWJsZUdldFZhbHVlKGxhc3RTZWVuKSwgV0tC
b29sZWFuR2V0VmFsdWUoaGFkVXNlckludGVyYWN0aW9uKSwgV0tEb3VibGVHZXRWYWx1ZShtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uKSwgV0tCb29sZWFuR2V0VmFsdWUoaXNHcmFuZGZhdGhlcmVk
KSwgV0tCb29sZWFuR2V0VmFsdWUoaXNQcmV2YWxlbnQpLCBXS0Jvb2xlYW5HZXRWYWx1ZShpc1Zl
cnlQcmV2YWxlbnQpLCBXS1VJbnQ2NEdldFZhbHVlKGRhdGFSZWNvcmRzUmVtb3ZlZCkpOworCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tE
aWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogCkBAIC0xODAxLDYgKzE4MzEsMTIgQEAgdm9pZCBUZXN0
SW52b2NhdGlvbjo6ZGlkU2V0TGFzdFNlZW4oKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9Jbmpl
Y3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFn
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmRp
ZE1lcmdlU3RhdGlzdGljKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2Fn
ZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkTWVy
Z2VTdGF0aXN0aWMiKSk7CisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VO
YW1lLmdldCgpLCAwKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0UHJldmFsZW50
UmVzb3VyY2UoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRQcmV2YWxl
bnRSZXNvdXJjZSIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRl
eCA3NmFhOWI4ZTFkYzAyZWM4YWQ5Mzg2OTQxNTc0NThmMTk1ZGEzY2Q2Li5hMjY1ZWI5YjI2ZTk0
ZDFlNGE4ZmZkY2VmNWRlMjk0Mzk1MWJiNDA1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNldFN0
YXRpc3RpY3NEZWJ1Z01vZGUoKTsKICAgICB2b2lkIGRpZFNldFByZXZhbGVudFJlc291cmNlRm9y
RGVidWdNb2RlKCk7CiAgICAgdm9pZCBkaWRTZXRMYXN0U2VlbigpOworICAgIHZvaWQgZGlkTWVy
Z2VTdGF0aXN0aWMoKTsKICAgICB2b2lkIGRpZFNldFByZXZhbGVudFJlc291cmNlKCk7CiAgICAg
dm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGRpZFNldEhhc0hh
ZFVzZXJJbnRlcmFjdGlvbigpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAwY2NhMWY1YzY1MmVkM2E4NzQzNDFmNTg0NWFk
ZDYyMGY5NjI4NjkuLjBjN2U1YzA4ZGRhNzAxYzg0MTgzOTJlNWM3NzBhMmZlMGY1Nzc3ZTQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0xMC0wMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGVkIHJlc291cmNlIGxvYWQgc3RhdGlz
dGljcyBhcmUgbmV2ZXIgbWVyZ2VkIGludG8gdGhlIFNRTGl0ZSBEYXRhYmFzZSBiYWNrZW5kICgy
MDIzNzIpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyMzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTg1NDU0Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBsYXlvdXQgdGVzdHMgdG8g
dGVzdCBzdWNjZXNmdWwgbWVyZ2luZyBvZiByZXNvdXJjZSBsb2FkCisgICAgICAgIHN0YXRpc3Rp
Y3MgaW50byBTUUxpdGUgYmFja2VuZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJhc2UuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21l
cmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0
aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbDogQWRkZWQuCisKIDIwMTktMDktMzAg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQYWdlcyB3aXRoIFdl
YiBXb3JrZXJzIGNhbm5vdCBlbnRlciB0aGUgYmFjayAvIGZvcndhcmQgY2FjaGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1z
dGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMt
ZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjQw
MWY5YTVlOWRjY2YyM2EzNzcwMDNkNjI3YWE1Zjg4NGZkMzg2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRp
c3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTMgQEAKK1Rlc3RzIHRoYXQgbWVyZ2VkIHN0YXRpc3RpYyBkb2VzIG5vdCBvdmVyd3JpdGUgb2xk
IHN0YXRpc3RpYworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBIb3N0IGRp
ZCBub3Qgb3ZlcndyaXRlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuCitQQVNTIEhvc3Qg
ZGlkIG5vdCBvdmVyd3JpdGUgb2xkIHZlcnkgcHJldmFsZW50IHJlc291cmNlIHZhbHVlLgorUEFT
UyBIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCBoYWQgdXNlciBpbnRlcmFjdGlvbiB2YWx1ZQor
UEFTUyBIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCBncmFuZGZhdGhlcmVkIHZhbHVlLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1z
dGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90
LW92ZXJ3cml0ZS1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNDllZWMzOWUzZjExYjVlNDU3
ZGJkOGJiOTJlYzdkYmM1ZDhlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90LW92
ZXJ3cml0ZS1kYXRhYmFzZS5odG1sCkBAIC0wLDAgKzEsNzkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PmRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IG1lcmdlZCBzdGF0aXN0aWMgZG9lcyBub3Qgb3Zlcndy
aXRlIG9sZCBzdGF0aXN0aWMiKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0
VGltZW91dCgnc2V0VXBBbmRSdW4oKScsIDApIj4KKzxzY3JpcHQ+CisgICAganNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICBjb25zdCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAg
ICBjb25zdCBzYW1wbGVUb3BGcmFtZVVSTCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAg
IGNvbnN0IG9sZGVyVGltZXN0YW1wID0gTWF0aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0VGltZSgp
IC8gMTAwMCk7CisgICAgY29uc3QgbmV3ZXJUaW1lc3RhbXAgPSBvbGRlclRpbWVzdGFtcCArIDEw
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmdW5jdGlvbiBp
bnNlcnRTZWNvbmRTdGF0aXN0aWMoKSB7CisgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NN
ZXJnZVN0YXRpc3RpYyh1cmwsICIiLCBvbGRlclRpbWVzdGFtcCwgZmFsc2UsIDk5LCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAwLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBpZiAodGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUu
Iik7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBv
dmVyd3JpdGUgb2xkIHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4iKQorICAgICAgICAgIAorICAg
ICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSh1
cmwpKQorICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9s
ZCB2ZXJ5IHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4iKTsKKyAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG92ZXJ3cml0ZSBvbGQgdmVyeSBwcmV2YWxl
bnQgcmVzb3VyY2UgdmFsdWUuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24odXJsKSkKKyAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBkaWQg
bm90IG92ZXJ3cml0ZSBvbGQgaGFkIHVzZXIgaW50ZXJhY3Rpb24gdmFsdWUiKTsKKyAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG92ZXJ3cml0ZSBvbGQg
aGFkIHVzZXIgaW50ZXJhY3Rpb24gdmFsdWUiKTsKKworICAgICAgICAgIGlmICh0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQodXJsKSkKKyAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiSG9zdCBkaWQgbm90IG92ZXJ3cml0ZSBvbGQgZ3JhbmRmYXRoZXJlZCB2YWx1ZS4iKTsKKyAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG92ZXJ3cml0
ZSBvbGQgZ3JhbmRmYXRoZXJlZCB2YWx1ZS4iKTsKKworICAgICAgICAgIHRlc3RSdW5uZXIuc3Rh
dGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfQorICAgIAor
ICAgIGZ1bmN0aW9uIHJ1blRlc3RSdW5uZXJUZXN0KCkgeworICAgICAgICB0ZXN0UnVubmVyLnNl
dFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyh1cmwsICIiLCBuZXdlclRpbWVzdGFtcCwgdHJ1ZSwg
MTAwLCB0cnVlLCB0cnVlLCB0cnVlLCAxLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICgh
dGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7
CisKKyAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50
UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdvdCBzZXQg
YXMgcHJldmFsZW50IHJlc291cmNlLiIpOworCisgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHVybCkpCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiSG9zdCBnb3QgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOworICAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0dyYW5k
ZmF0aGVyZWQodXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdvdCBzZXQg
YXMgZ3JhbmRmYXRoZXJlZC4iKTsKKworICAgICAgICAgICAgaW5zZXJ0U2Vjb25kU3RhdGlzdGlj
KCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFVwQW5kUnVuKCkgewor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRy
dWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBydW5UZXN0UnVubmVyVGVzdCgpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJubyB0ZXN0UnVubmVyIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNl
dFRvQ29uc2lzdGVudFN0YXRlKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWRjZjdlODBkNzk5MGY4MDQ0NzAxNGI3ZDVlMmJhMDI0MjkzMmUxOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgbWVyZ2VkIHN0YXRpc3RpYyBvdmVyd3JpdGVz
IG9sZCBzdGF0aXN0aWMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSG9z
dCBvdmVyd3JvdGUgb2xkIHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4KK1BBU1MgSG9zdCBvdmVy
d3JvdGUgb2xkIHZlcnkgcHJldmFsZW50IHJlc291cmNlIHZhbHVlLgorUEFTUyBIb3N0IG92ZXJ3
cm90ZSBvbGQgdXNlciBpbnRlcmFjdGlvbiB2YWx1ZS4KK1BBU1MgSG9zdCBvdmVyd3JvdGUgb2xk
IGdyYW5kZmF0aGVyZWQgdmFsdWUuCitQQVNTIEhvc3Qgc2V0IGFzIHN1YmZyYW1lIHVuZGVyIHRv
cCBmcmFtZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGlj
LWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQxMmUxNWNjODBmNGU3
YTgzZjQxNTc4MDBkN2MzNGIwODlmNDg2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1v
dmVyd3JpdGUtZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDkwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAg
ICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD5kZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBtZXJnZWQgc3RhdGlzdGljIG92ZXJ3cml0ZXMgb2xk
IHN0YXRpc3RpYyIpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0
KCdzZXRVcEFuZFJ1bigpJywgMCkiPgorPHNjcmlwdD4KKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgIGNvbnN0IHVybCA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0
IHNhbXBsZVRvcEZyYW1lVVJMID0gImh0dHA6Ly90b3BGcmFtZURvbWFpbjo4MDAwIjsKKyAgICBj
b25zdCBvbGRlclRpbWVzdGFtcCA9IE1hdGgucm91bmQoKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAv
IDEwMDApOworICAgIGNvbnN0IG5ld2VyVGltZXN0YW1wID0gb2xkZXJUaW1lc3RhbXAgKyAxMDsK
KyAgICBjb25zdCBtb3N0UmVjZW50VUlUb1RyaWdnZXJGaXJzdFBhcnR5SW50ZXJhY3Rpb25Db3Vu
dCA9IG5ld2VyVGltZXN0YW1wICsgOTAwMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAorICAgIGZ1bmN0aW9uIGluc2VydFNlY29uZFN0YXRpc3RpYygpIHsKKyAgICAK
KyAgICAgICAgLy8gc2V0IHRoaXMgcmVzb3VyY2UgYXMgcHJldmFsZW50IHNvIGl0IGlzIGluIHRo
ZSBzdGF0aXN0aWNzIHN0b3JlCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHNhbXBsZVRvcEZyYW1lVVJMLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgCisgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGlj
KHVybCwgc2FtcGxlVG9wRnJhbWVVUkwsIG5ld2VyVGltZXN0YW1wLCB0cnVlLCBtb3N0UmVjZW50
VUlUb1RyaWdnZXJGaXJzdFBhcnR5SW50ZXJhY3Rpb25Db3VudCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
MSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkhvc3Qgb3Zlcndyb3RlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuIik7Cisg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
SG9zdCBub3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgICAg
ICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKHVybCkp
CisgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBvdmVyd3JvdGUgb2xkIHZl
cnkgcHJldmFsZW50IHJlc291cmNlIHZhbHVlLiIpOworICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IHNldCBhcyB2ZXJ5IHBy
ZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odXJsKSkKKyAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJIb3N0IG92ZXJ3cm90ZSBvbGQgdXNlciBpbnRlcmFjdGlvbiB2YWx1ZS4i
KTsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJIb3N0IG5vdCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NH
cmFuZGZhdGhlcmVkKHVybCkpCisgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9z
dCBvdmVyd3JvdGUgb2xkIGdyYW5kZmF0aGVyZWQgdmFsdWUuIik7CisgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBub3Qgc2V0IGFz
IGdyYW5kZmF0aGVyZWQuIik7CisKKyAgICAgICAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIodXJsLCBzYW1wbGVUb3BGcmFtZVVS
TCkpCisgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBzZXQgYXMgc3ViZnJh
bWUgdW5kZXIgdG9wIGZyYW1lLiIpOworICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IHNldCBhcyBzdWJmcmFtZSB1bmRlciB0
b3AgZnJhbWUuIik7CisKKyAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgfSk7
CisgICAgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gcnVuVGVzdFJ1bm5lclRl
c3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKHVy
bCwgIiIsIG9sZGVyVGltZXN0YW1wLCBmYWxzZSwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290
IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgIGlmICh0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisK
KyAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFj
dGlvbih1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IGxvZ2dlZCBm
b3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQodXJsKSkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJIb3N0IGdvdCBzZXQgYXMgZ3JhbmRmYXRoZXJlZC4iKTsKKworICAgICAg
ICAgICAgaW5zZXJ0U2Vjb25kU3RhdGlzdGljKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHNldFVwQW5kUnVuKCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAg
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBydW5UZXN0UnVubmVyVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJubyB0ZXN0UnVubmVyIik7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379975</attachid>
            <date>2019-10-01 17:46:59 -0700</date>
            <delta_ts>2019-10-02 10:46:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202372-20191001174658.patch</filename>
            <type>text/plain</type>
            <size>115331</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNDM3M2FhOTljZWRiMzY0
ZjZjMGNjNTVjYzQ1YmUyNGRjM2U0N2EuLmUxNGI5MzE1MzZjNWEyMmZmYTRmOWRkMzE5NjM2YTA5
ODRjMDA5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDE5LTEwLTAxICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFyZSBuZXZlciBtZXJnZWQgaW50byB0aGUgU1FMaXRlIERh
dGFiYXNlIGJhY2tlbmQgKDIwMjM3MikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDIzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1ODU0NTQy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaGFzIGEgbG90IG9mIGNoYW5nZXMgdG8gdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
YmUgYWJsZSAKKyAgICAgICAgdG8gdGVzdCB0aGUgbWVyZ2VTdGF0aXN0aWNzIGZ1bmN0aW9uLiBN
ZXJnaW5nIGZ1bmN0aW9uYWxpdHkgbWltaWNzCisgICAgICAgIHRoYXQgb2YgdGhlIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSBhbmQgdGhlIG1lcmdlKCkgZnVuY3Rpb24gaW4KKyAg
ICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToKKyAgICAgICAgQWRkZWQgbmV3IFNR
TGl0ZSBxdWVyaWVzIHRoYXQgYXJlIG5lZWRlZCB0byBtZXJnZSBuZXcgc3RhdGlzdGljcy4KKwor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJl
cGFyZVN0YXRlbWVudHMpOgorICAgICAgICBBZGRlZCBuZXcgcHJlcGFyZSBzdGF0ZW1lbnRzIGZv
ciBuZXcgU1FMaXRlIHF1ZXJpZXMuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKToKKyAgICAgICAgVXBk
YXRlZCB0byB1c2UgZG9tYWluSUQoKSBpbnN0ZWFkIG9mIGNvbmZpcm1Eb21haW5Eb2VzTm90RXhp
c3Qgd2hpY2ggCisgICAgICAgIHdhcyBkZWxldGVkLiBDaGFuZ2VkIHRoZSBpbnNlcnQgYmluZCBw
YXJhbWV0ZXJzCisgICAgICAgIHRvIHV0aWxpemUgbmV3IGVudW0gb2YgT2JzZXJ2ZWQgRG9tYWlu
IHRhYmxlIGluZGljZXMgd2hpY2ggd2lsbCBoZWxwCisgICAgICAgIHJlZHVjZSBlcnJvcnMgaW4g
dGhlIGZ1dHVyZSBpZiB0aGUgZGF0YWJhc2Ugc2NoZW1hIGNoYW5nZXMuCisKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4
aXN0cyBjb25zdCk6CisgICAgICAgIENoYW5nZWQge3B1YmxpY30gdG8ge3ByaXZhdGV9IGluIGxv
Z2dpbmcgc3RhdGVtZW50IHRvIGF2b2lkIGxlYWtpbmcKKyAgICAgICAgc2Vuc2l0aXZlIGluZm9y
bWF0aW9uIHdoZW4gbG9nZ2luZyB0aGUgcXVlcnkgZXJyb3IuCisKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvbmZpcm1Eb21haW5Eb2VzTm90
RXhpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGVzc2VudGlhbGx5
IGRvZXMgdGhlIGV4YWN0IHNhbWUgdGhpbmcgYXMgZG9tYWluSUQgYW5kCisgICAgICAgIHdlIGNh
biByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiBieSBkZWxldGluZyBpdCBhbmQgdHJhbnNpdGlvbmlu
ZyBhbGwKKyAgICAgICAgb3RoZXIgZnVuY3Rpb25zIHRvIHVzZSBkb21haW5JRCBpbnN0ZWFkLgor
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpk
b21haW5JRCBjb25zdCk6CisgICAgICAgIENoYW5nZWQge3B1YmxpY30gdG8ge3ByaXZhdGV9IGlu
IGxvZ2dpbmcgc3RhdGVtZW50IHRvIGF2b2lkIGxlYWtpbmcKKyAgICAgICAgc2Vuc2l0aXZlIGlu
Zm9ybWF0aW9uIHdoZW4gbG9nZ2luZyB0aGUgcXVlcnkgZXJyb3IuCisgICAgICAgIAorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9t
YWluUmVsYXRpb25zaGlwcyk6CisgICAgICAgIEluIG9yZGVyIHRvIHJldXNlIHRoaXMgY29kZSBm
b3IgdGhlIG1lcmdlIHN0YXRpc3RpY3MgZnVuY3Rpb24sIEkgYWRkZWQKKyAgICAgICAgYSBjaGVj
ayBiZWZvcmUgZWFjaCBpbnNlcnQgY2FsbCB0byBlbnN1cmUgdGhlIHJlbGF0aW9uc2hpcCBkb2Vz
IG5vdAorICAgICAgICBhbHJlYWR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS4gVGhpcyB3YXMgbm90
IG5lZWRlZCBiZWZvcmUgYmVjYXVzZSBpdAorICAgICAgICB3YXMgb25seSBjYWxsZWQgb24gYW4g
ZW1wdHkgZGF0YWJhc2UuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1lcmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyk6Cisg
ICAgICAgIE1lcmdlcyBuZXcgc3RhdGlzdGljLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50
Rm9yRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0
ZWRUb1RoaXNEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFu
ZGZhdGhlckRhdGFGb3JEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzZXRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVkaWNh
dGVWYWx1ZUZvckRvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAg
Q2hhbmdlZCB7cHVibGljfSB0byB7cHJpdmF0ZX0gaW4gbG9nZ2luZyBzdGF0ZW1lbnQgdG8gYXZv
aWQgbGVha2luZworICAgICAgICBzZW5zaXRpdmUgaW5mb3JtYXRpb24gd2hlbiBsb2dnaW5nIHRo
ZSBxdWVyeSBlcnJvci4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZCk6CisgICAgICAgIEZpeCBhIGJ1ZyB1bmNv
dmVyZWQgYnkgdGhlIG5ldyB0ZXN0IGNhc2VzLgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVUcmVh
dG1lbnRGb3JPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJFeHBpcmVkVXNlckludGVyYWN0aW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckdy
YW5kZmF0aGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuKToKKyAg
ICAgICAgQ2hhbmdlZCB7cHVibGljfSB0byB7cHJpdmF0ZX0gaW4gbG9nZ2luZyBzdGF0ZW1lbnQg
dG8gYXZvaWQgbGVha2luZworICAgICAgICBzZW5zaXRpdmUgaW5mb3JtYXRpb24gd2hlbiBsb2dn
aW5nIHRoZSBxdWVyeSBlcnJvci4KKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQpOgor
ICAgICAgICBBIG5ldyBmdW5jdGlvbiB0aGF0IHV0aWxpemVzIGEgcXVlcnkgbmVlZGVkIGZvciB0
aGUgbWVyZ2luZyBvZiB0d28KKyAgICAgICAgc3RhdGlzdGljcy4KKyAgICAgICAgCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb25maXJtRG9t
YWluRG9lc05vdEV4aXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAg
ICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjptZXJnZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Ondhc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9Vc2VySW50ZXJhY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmVkIHRo
ZSBjaGVjayBmb3IgdXBkYXRpbmcgdGltZXMgYWNjZXNzZWQgZHVlIHRvIGZpcnN0IHBhcnR5IAor
ICAgICAgICBpbnRlcmFjdGlvbiwgd2hpY2ggaXMgZGF0YSBubyBsb25nZXIgbmVlZGVkIGluIHVw
ZGF0ZWQgSVRQLiAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgQWRkZWQg
dGhlIG1lcmdlU3RhdGlzdGljcyBmdW5jdGlvbiAocHJldmlvdXNseSBvbmx5IGluIHRoZSBtZW1v
cnkKKyAgICAgICAgc3RvcmUpIHRvIHRoZSBwYXJlbnQgY2xhc3Mgbm93IHRoYXQgaXQgaXMgdXNl
ZCBieSBib3RoIHN0b3Jlcy4KKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBub3cgY2FsbHMgbWVyZ2VTdGF0aXN0
aWNzIG9uIHRoZSBkYXRhYmFzZSBzdG9yZSBpZgorICAgICAgICBlbmFibGVkLgorCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNG
b3JUZXN0aW5nKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBidWlsZHMgYSB2ZWN0b3IgZnJvbSB0
aGUgc2FtcGxlIGRhdGEgdG8gdGVzdCB0aGUKKyAgICAgICAgbWVyZ2VTdGF0aXN0aWNzKCkgZnVu
Y3Rpb24gb2YgdGhlIGRhdGFiYXNlIHN0b3JlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzTWVyZ2VTdGF0aXN0aWMpOgorICAgICAgICBGaXhlZCBidWcgd2hlcmUgaXNHcmFuZGZhdGhl
cmVkIGZ1bmN0aW9uIGluIFdLV2Vic2l0ZURhdGFTdG9yZVJlZgorICAgICAgICB3YXMgY2FsbGlu
ZyBoYXNIYWRVc2VySW50ZXJhY3Rpb24gYnkgbWlzdGFrZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIFRoaXMgY29kZSBpcyBm
b3IgdGVzdGluZyB0aGUgbWVyZ2VTdGF0aXN0aWNzKCkgZnVuY3Rpb24uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmlzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgQWRkZWQg
dGhpcyBmdW5jdGlvbiB3aGljaCBjb250YWN0cyB0aGUgbmV0d29ya1Byb2Nlc3MgdG8gcmV0cmll
dmUgdGhlCisgICAgICAgIGdyYW5kZmF0aGVyZWQgdmFsdWUgZm9yIGEgZG9tYWluLiBUaGlzIHdh
cyBub3QgaW5jbHVkZWQgYmVmb3JlIGJlY2F1c2UKKyAgICAgICAgb2YgYSBidWcgaW4gV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLgorCiAyMDE5LTA5LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBEb3dubG9hZE1vbml0b3IgdGVzdCBz
cGVlZCBtdWx0aXBsaWVyIGZyb20gV2ViUHJvY2Vzc1Bvb2wgdG8gV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwCmluZGV4IDJjMzA0ZTc5NGYyMzcxMzNmYjViMmM5N2FkODhlZDdhMDNh
YTdhZjcuLjk2YmQ3OTY0MmFjZTc4N2VmMTAxZWY0ZjdlZGFiZTlhNGQ1NjhkNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApA
QCAtNzAsNiArNzAsOCBAQCBjb25zdGV4cHIgYXV0byBpbnNlcnRUb3BMZXZlbERvbWFpblF1ZXJ5
ID0gIklOU0VSVCBJTlRPIFRvcExldmVsRG9tYWlucyBWQUxVRVMgKAogY29uc3RleHByIGF1dG8g
ZG9tYWluSURGcm9tU3RyaW5nUXVlcnkgPSAiU0VMRUNUIGRvbWFpbklEIEZST00gT2JzZXJ2ZWRE
b21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc1F1ZXJ5ID0gIklOU0VSVCBJTlRPIFN0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyAoZG9tYWluSUQsIHRvcExldmVsRG9tYWluSUQp
ICIKICAgICAiU0VMRUNUID8sIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJl
Z2lzdHJhYmxlRG9tYWluID09ID8iX3M7Citjb25zdGV4cHIgYXV0byBzdG9yYWdlQWNjZXNzVW5k
ZXJUb3BGcmFtZURvbWFpbnNFeGlzdHNRdWVyeSA9ICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBG
Uk9NIFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBkb21haW5JRCA9ID8g
IgorIkFORCB0b3BMZXZlbERvbWFpbklEID0gKFNFTEVDVCBkb21haW5JRCBGUk9NIE9ic2VydmVk
RG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8pKSJfczsKIGNvbnN0ZXhwciBhdXRv
IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9RdWVyeSA9ICJJTlNFUlQgSU5UTyBUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c1RvIChzb3VyY2VEb21haW5JRCwgdG9Eb21haW5JRCkgU0VMRUNUID8sIGRv
bWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID09ID8i
X3M7CiBjb25zdGV4cHIgYXV0byB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzUXVlcnkg
PSAiU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
IFdIRVJFIHNvdXJjZURvbWFpbklEID0gPyAiCiAgICAgIkFORCB0b0RvbWFpbklEID0gKFNFTEVD
VCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9
ID8pKSJfczsKQEAgLTEwMCw2ICsxMDIsNyBAQCBjb25zdGV4cHIgYXV0byBzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c0Zyb21FeGlzdHNRdWVyeSA9ICJTRUxFQ1QgRVhJU1RTIChTRUxFQwogY29u
c3RleHByIGF1dG8gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblF1ZXJ5ID0gIlVQREFURSBPYnNl
cnZlZERvbWFpbnMgU0VUIGhhZFVzZXJJbnRlcmFjdGlvbiA9ID8sIG1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lID0gPyAiCiAgICAgIldIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsK
IGNvbnN0ZXhwciBhdXRvIHVwZGF0ZUxhc3RTZWVuUXVlcnkgPSAiVVBEQVRFIE9ic2VydmVkRG9t
YWlucyBTRVQgbGFzdFNlZW4gPSA/IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKK2Nv
bnN0ZXhwciBhdXRvIHVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFF1ZXJ5ID0gIlVQREFURSBPYnNl
cnZlZERvbWFpbnMgU0VUIGRhdGFSZWNvcmRzUmVtb3ZlZCA9ID8gV0hFUkUgcmVnaXN0cmFibGVE
b21haW4gPSA/Il9zOwogY29uc3RleHByIGF1dG8gdXBkYXRlUHJldmFsZW50UmVzb3VyY2VRdWVy
eSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhbGVudCA9ID8gV0hFUkUgcmVn
aXN0cmFibGVEb21haW4gPSA/Il9zOwogY29uc3RleHByIGF1dG8gaXNQcmV2YWxlbnRSZXNvdXJj
ZVF1ZXJ5ID0gIlNFTEVDVCBpc1ByZXZhbGVudCBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSBy
ZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byB1cGRhdGVWZXJ5UHJldmFs
ZW50UmVzb3VyY2VRdWVyeSA9ICJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ZlcnlQcmV2
YWxlbnQgPSA/IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKQEAgLTExNSw3ICsxMTgs
MjEgQEAgY29uc3RleHByIGF1dG8gY3JlYXRlT2JzZXJ2ZWREb21haW4gPSAiQ1JFQVRFIFRBQkxF
IE9ic2VydmVkRG9tYWlucyAoIgogICAgICJoYWRVc2VySW50ZXJhY3Rpb24gSU5URUdFUiBOT1Qg
TlVMTCwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgUkVBTCBOT1QgTlVMTCwgZ3JhbmRm
YXRoZXJlZCBJTlRFR0VSIE5PVCBOVUxMLCAiCiAgICAgImlzUHJldmFsZW50IElOVEVHRVIgTk9U
IE5VTEwsIGlzVmVyeVByZXZhbGVudCBJTlRFR0VSIE5PVCBOVUxMLCBkYXRhUmVjb3Jkc1JlbW92
ZWQgSU5URUdFUiBOT1QgTlVMTCwiCiAgICAgInRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVU
b1VzZXJJbnRlcmFjdGlvbiBJTlRFR0VSIE5PVCBOVUxMLCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBh
cnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIElOVEVHRVIgTk9UIE5VTEwpOyJfczsKLSAgICAKKwor
ZW51bSB7CisgICAgRG9tYWluSURJbmRleCwKKyAgICBSZWdpc3RyYWJsZURvbWFpbkluZGV4LAor
ICAgIExhc3RTZWVuSW5kZXgsCisgICAgSGFkVXNlckludGVyYWN0aW9uSW5kZXgsCisgICAgTW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVJbmRleCwKKyAgICBHcmFuZGZhdGhlcmVkSW5kZXgs
CisgICAgSXNQcmV2YWxlbnRJbmRleCwKKyAgICBJc1ZlcnlQcmV2YWxlbnRJbmRleCwKKyAgICBE
YXRhUmVjb3Jkc1JlbW92ZWRJbmRleCwKKyAgICBUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVl
VG9Vc2VySW50ZXJhY3Rpb25JbmRleCwKKyAgICBUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVl
VG9TdG9yYWdlQWNjZXNzQVBJSW5kZXgKK307CisKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVRvcExl
dmVsRG9tYWlucyA9ICJDUkVBVEUgVEFCTEUgVG9wTGV2ZWxEb21haW5zICgiCiAgICAgInRvcExl
dmVsRG9tYWluSUQgSU5URUdFUiBQUklNQVJZIEtFWSwgQ09OU1RSQUlOVCBma0RvbWFpbklEIEZP
UkVJR04gS0VZKHRvcExldmVsRG9tYWluSUQpICIKICAgICAiUkVGRVJFTkNFUyBPYnNlcnZlZERv
bWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKTsiX3M7CkBAIC0xNjgsNiArMTg1LDcg
QEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc28KICAgICAsIG1faW5zZXJ0VG9wTGV2ZWxEb21haW5T
dGF0ZW1lbnQobV9kYXRhYmFzZSwgaW5zZXJ0VG9wTGV2ZWxEb21haW5RdWVyeSkKICAgICAsIG1f
ZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50KG1fZGF0YWJhc2UsIGRvbWFpbklERnJvbVN0cmlu
Z1F1ZXJ5KQogICAgICwgbV9zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1l
bnQobV9kYXRhYmFzZSwgc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zUXVlcnkpCisg
ICAgLCBtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0c1N0YXRlbWVudCht
X2RhdGFiYXNlLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNFeGlzdHNRdWVyeSkK
ICAgICAsIG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyhtX2RhdGFiYXNlLCB0b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c1RvUXVlcnkpCiAgICAgLCBtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9F
eGlzdHMobV9kYXRhYmFzZSwgdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0V4aXN0c1F1ZXJ5KQog
ICAgICwgbV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20obV9kYXRhYmFzZSwgdG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNGcm9tUXVlcnkpCkBAIC0xODQsNiArMjAyLDcgQEAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlKFdlYlJlc28KICAgICAsIG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tRXhpc3Rz
KG1fZGF0YWJhc2UsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUV4aXN0c1F1ZXJ5KQog
ICAgICwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50KG1fZGF0YWJhc2UsIG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25RdWVyeSkKICAgICAsIG1fdXBkYXRlTGFzdFNlZW5TdGF0
ZW1lbnQobV9kYXRhYmFzZSwgdXBkYXRlTGFzdFNlZW5RdWVyeSkKKyAgICAsIG1fdXBkYXRlRGF0
YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVwZGF0ZURhdGFSZWNvcmRzUmVt
b3ZlZFF1ZXJ5KQogICAgICwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudChtX2Rh
dGFiYXNlLCB1cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KQogICAgICwgbV9pc1ByZXZhbGVu
dFJlc291cmNlU3RhdGVtZW50KG1fZGF0YWJhc2UsIGlzUHJldmFsZW50UmVzb3VyY2VRdWVyeSkK
ICAgICAsIG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50KG1fZGF0YWJhc2Us
IHVwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5KQpAQCAtMTk4LDcgKzIxNyw3IEBAIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZShXZWJSZXNvCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBpZiAoIW1fZGF0YWJhc2Uub3BlbihtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6b3BlbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMs
IGRhdGFiYXNlIHBhdGg6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6b3BlbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zLCBkYXRhYmFz
ZSBwYXRoOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1f
c3RvcmFnZURpcmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA4LDE3ICsyMjcsMTcgQEAg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlKFdlYlJlc28KIAogICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0
cygiT2JzZXJ2ZWREb21haW5zIl9zKSkgewogICAgICAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlU2NoZW1hIGZhaWxlZCwgZXJyb3IgbWVz
c2FnZTogJXtwdWJsaWN9cywgZGF0YWJhc2UgcGF0aDogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlU2NoZW1hIGZhaWxlZCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMsIGRhdGFiYXNlIHBhdGg6ICV7cHJpdmF0ZX1zIiwgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICghbV9kYXRhYmFzZS50dXJu
T25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKSkKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0
d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnR1cm5Pbklu
Y3JlbWVudGFsQXV0b1ZhY3V1bSBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnR1
cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAKICAgICBpZiAoIXByZXBh
cmVTdGF0ZW1lbnRzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRz
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cywgZGF0YWJhc2UgcGF0aDogJXtwdWJs
aWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9y
eVBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVt
ZW50cyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zLCBkYXRhYmFzZSBwYXRoOiAl
e3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZURp
cmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzA5LDYgKzMyOCw3IEBAIGJvb2wgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzKCkKICAgICAg
ICAgfHwgbV9pbnNlcnRUb3BMZXZlbERvbWFpblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LCiAgICAgICAgIHx8IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFp
bnNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3N0b3JhZ2VB
Y2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LCiAgICAgICAgIHx8IG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUby5wcmVwYXJlKCkg
IT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0V4aXN0
cy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNGcm9tLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKQEAgLTMyMiw2ICszNDIsNyBAQCBib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50cygp
CiAgICAgICAgIHx8IG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21F
eGlzdHMucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3VwZGF0ZUxhc3RTZWVu
U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91cGRhdGVEYXRh
UmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8
fCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElU
RV9PSwogICAgICAgICB8fCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9pc1ByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKQEAgLTMzNCw3ICszNTUsNyBAQCBib29sIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50cygpCiAgICAg
ICAgIHx8IG1fZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTElURV9PSwogICAgICAgICB8fCBtX3RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbS5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNG
cm9tRXhpc3RzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnByZXBhcmVTdGF0ZW1lbnRzIGZhaWxlZCB0byBwcmVwYXJlLCBlcnJvciBtZXNzYWdlOiAle3B1
YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50cyBmYWlsZWQgdG8gcHJlcGFyZSwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC0zNDYsMjcgKzM2NywyOSBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNvdXJjZUxvYQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0jaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChjb25m
aXJtRG9tYWluRG9lc05vdEV4aXN0KGxvYWRTdGF0aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWluKSk7
Ci0jZW5kaWYKKyAgICBpZiAoZG9tYWluSUQobG9hZFN0YXRpc3RpY3MucmVnaXN0cmFibGVEb21h
aW4pKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21h
aW4gY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGRvbWFpbnMgbm90IGluIHRoZSBkYXRhYmFzZS4iKTsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CiAKLSAgICBpZiAobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kVGV4dCgx
LCBsb2FkU3RhdGlzdGljcy5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09L
Ci0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZERvdWJsZSgy
LCBsb2FkU3RhdGlzdGljcy5sYXN0U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9
IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJp
bmRJbnQoMywgbG9hZFN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kRG91YmxlKDQs
IGxvYWRTdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5j
ZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2
ZWREb21haW5TdGF0ZW1lbnQuYmluZEludCg1LCBsb2FkU3RhdGlzdGljcy5ncmFuZGZhdGhlcmVk
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVu
dC5iaW5kSW50KDYsIGxvYWRTdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElU
RV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQo
NywgbG9hZFN0YXRpc3RpY3MuaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoOCwgbG9h
ZFN0YXRpc3RpY3MuZGF0YVJlY29yZHNSZW1vdmVkKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KDksIGxvYWRTdGF0aXN0aWNz
LnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludCgx
MCwgbG9hZFN0YXRpc3RpY3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFj
Y2Vzc0FQSSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTog
JXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgIGlmICht
X2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRUZXh0KFJlZ2lzdHJhYmxlRG9tYWlu
SW5kZXgsIGxvYWRTdGF0aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kRG91
YmxlKExhc3RTZWVuSW5kZXgsIGxvYWRTdGF0aXN0aWNzLmxhc3RTZWVuLnNlY29uZHNTaW5jZUVw
b2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWRE
b21haW5TdGF0ZW1lbnQuYmluZEludChIYWRVc2VySW50ZXJhY3Rpb25JbmRleCwgbG9hZFN0YXRp
c3RpY3MuaGFkVXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb25UaW1lSW5kZXgsIGxvYWRTdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChHcmFuZGZhdGhlcmVkSW5k
ZXgsIGxvYWRTdGF0aXN0aWNzLmdyYW5kZmF0aGVyZWQpICE9IFNRTElURV9PSworICAgICAgICB8
fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoSXNQcmV2YWxlbnRJbmRl
eCwgbG9hZFN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSkgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChJc1ZlcnlQcmV2
YWxlbnRJbmRleCwgbG9hZFN0YXRpc3RpY3MuaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpICE9IFNR
TElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJ
bnQoRGF0YVJlY29yZHNSZW1vdmVkSW5kZXgsIGxvYWRTdGF0aXN0aWNzLmRhdGFSZWNvcmRzUmVt
b3ZlZCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0
ZW1lbnQuYmluZEludChUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rp
b25JbmRleCwgbG9hZFN0YXRpc3RpY3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNl
ckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERv
bWFpblN0YXRlbWVudC5iaW5kSW50KFRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3Jh
Z2VBY2Nlc3NBUElJbmRleCwgbG9hZFN0YXRpc3RpY3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0
eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gYmluZCwg
ZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBpZiAobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVk
RG9tYWluIGZhaWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2Vy
dE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzg3LDcgKzQx
MCw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9u
c2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxpdGVTdGF0CiAgICAgaWYgKHN0YXRlbWVudC5iaW5kSW50
KDEsICpmaXJzdERvbWFpbklEKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgc3RhdGVtZW50LmJp
bmRUZXh0KDIsIHNlY29uZERvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8
IHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bV9pbnNlcnREb21haW5SZWxhdGlvbnNoaXBTdGF0ZW1lbnQgZmFpbGVk
IHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1faW5z
ZXJ0RG9tYWluUmVsYXRpb25zaGlwU3RhdGVtZW50IGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
QEAgLTQwNiw3ICs0MjksNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXAoV2ViQ29yZTo6U1FMaQogICAgIGlmIChzdGF0
ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN0YXRl
bWVudC5iaW5kVGV4dCgyLCB0b3BGcmFtZS5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAg
IHx8IHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om1faW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwU3RhdGVtZW50IGZh
aWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpt
X2luc2VydERvbWFpblJlbGF0aW9uc2hpcFN0YXRlbWVudCBmYWlsZWQgdG8gYmluZCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC00MTcsMzAgKzQ0MCw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcChXZWJDb3JlOjpTUUxpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjb25maXJtRG9tYWluRG9lc05vdEV4aXN0KGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW4pIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0KLSAgICBpZiAobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuYmluZFRleHQoMSwg
ZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNvbmZpcm1Eb21haW5Eb2VzTm90RXhpc3QgZmFpbGVkIHRvIGJpbmQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgICAgIAotICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5z
dGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2RvbWFp
bklERnJvbVN0cmluZ1N0YXRlbWVudC5yZXNldCgpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJpbmdT
dGF0ZW1lbnQucmVzZXQoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJl
c3VsdCA9PSBTUUxJVEVfT0spOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotI2VuZGlmCi0K
IE9wdGlvbmFsPHVuc2lnbmVkPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
ZG9tYWluSUQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQ0OCw3ICs0NDcsNyBAQCBPcHRpb25hbDx1
bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklEKGNv
bnN0IFJlZ2lzdHJhYgogICAgIHVuc2lnbmVkIGRvbWFpbklEID0gMDsKIAogICAgIGlmIChtX2Rv
bWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWlu
SURGcm9tU3RyaW5nIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6ZG9tYWluSURGcm9tU3RyaW5nIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRl
fXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICB9CiAgICAgCkBAIC00NzQsMjYgKzQ3Myw0MCBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBz
KGNvbnN0IFJlc291cgogICAgIGlmICghcmVnaXN0cmFibGVEb21haW5JRCkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIGZvciAoYXV0byYgdG9wRnJhbWVEb21haW4gOiBsb2FkU3RhdGlzdGlj
cy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpCi0gICAgICAgIGluc2VydERvbWFp
blJlbGF0aW9uc2hpcChtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVu
dCwgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b3BGcmFtZURvbWFpbik7CisgICAgZm9y
IChhdXRvJiB0b3BGcmFtZURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN0b3JhZ2VBY2Nlc3NVbmRl
clRvcEZyYW1lRG9tYWlucykgeworICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyhtX3N0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0c1N0YXRlbWVudCwgcmVnaXN0cmFi
bGVEb21haW5JRC52YWx1ZSgpLCB0b3BGcmFtZURvbWFpbikpCisgICAgICAgICAgICBpbnNlcnRE
b21haW5SZWxhdGlvbnNoaXAobV9zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0
ZW1lbnQsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pOworICAg
IH0KIAotICAgIGZvciAoYXV0byYgdG9Eb21haW4gOiBsb2FkU3RhdGlzdGljcy50b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c1RvKQotICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV90b3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c1RvLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvRG9t
YWluKTsKKyAgICBmb3IgKGF1dG8mIHRvRG9tYWluIDogbG9hZFN0YXRpc3RpY3MudG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUbykgeworICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyhtX3Rv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUo
KSwgdG9Eb21haW4pKQorICAgICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fdG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNUbywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b0Rv
bWFpbik7CisgICAgfQogICAgIAotICAgIGZvciAoYXV0byYgZnJvbURvbWFpbiA6IGxvYWRTdGF0
aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkKLSAgICAgICAgaW5zZXJ0RG9tYWlu
UmVsYXRpb25zaGlwKG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLCByZWdpc3RyYWJsZURv
bWFpbklELnZhbHVlKCksIGZyb21Eb21haW4pOworICAgIGZvciAoYXV0byYgZnJvbURvbWFpbiA6
IGxvYWRTdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkgeworICAgICAgICBp
ZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyhtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbUV4aXN0
cywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCBmcm9tRG9tYWluKSkKKyAgICAgICAgICAg
IGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSwg
cmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCBmcm9tRG9tYWluKTsKKyAgICB9CiAgICAgCi0g
ICAgZm9yIChhdXRvJiB0b3BGcmFtZURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMpCi0gICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1
YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwg
dG9wRnJhbWVEb21haW4pOworICAgIGZvciAoYXV0byYgdG9wRnJhbWVEb21haW4gOiBsb2FkU3Rh
dGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKSB7CisgICAgICAgIGlmICghcmVs
YXRpb25zaGlwRXhpc3RzKG1fc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLCByZWdp
c3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKSkKKyAgICAgICAgICAgIGlu
c2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMsIHJl
Z2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pOworICAgIH0KICAgICAK
LSAgICBmb3IgKGF1dG8mIHRvcEZyYW1lRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lRG9tYWlucykKLSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlw
KG1fc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucywgcmVnaXN0cmFibGVEb21haW5JRC52
YWx1ZSgpLCB0b3BGcmFtZURvbWFpbik7CisgICAgZm9yIChhdXRvJiB0b3BGcmFtZURvbWFpbiA6
IGxvYWRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMpIHsKKyAgICAg
ICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21h
aW5FeGlzdHMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pKQor
ICAgICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b3BGcmFtZURvbWFp
bik7CisgICAgfQogICAgIAotICAgIGZvciAoYXV0byYgdG9Eb21haW4gOiBsb2FkU3RhdGlzdGlj
cy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKQotICAgICAgICBpbnNlcnREb21haW5SZWxh
dGlvbnNoaXAobV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLCByZWdpc3RyYWJsZURvbWFp
bklELnZhbHVlKCksIHRvRG9tYWluKTsKKyAgICBmb3IgKGF1dG8mIHRvRG9tYWluIDogbG9hZFN0
YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykgeworICAgICAgICBpZiAoIXJl
bGF0aW9uc2hpcEV4aXN0cyhtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHMsIHJl
Z2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9Eb21haW4pKQorICAgICAgICAgICAgaW5zZXJ0
RG9tYWluUmVsYXRpb25zaGlwKG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgcmVnaXN0
cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b0RvbWFpbik7CisgICAgfQogICAgIAotICAgIGZvciAo
YXV0byYgZnJvbURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbSkKLSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNGcm9tLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIGZyb21Eb21h
aW4pOworICAgIGZvciAoYXV0byYgZnJvbURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkgeworICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0
cyhtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUV4aXN0cywgcmVnaXN0cmFibGVEb21h
aW5JRC52YWx1ZSgpLCBmcm9tRG9tYWluKSkKKyAgICAgICAgICAgIGluc2VydERvbWFpblJlbGF0
aW9uc2hpcChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSwgcmVnaXN0cmFibGVEb21h
aW5JRC52YWx1ZSgpLCBmcm9tRG9tYWluKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSYgbWVtb3J5U3RvcmUpCkBAIC01MTMsNiAr
NTI2LDczIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBvcHVs
YXRlRnJvbU1lbW9yeVN0b3JlKGNvbnN0IFJlc291cmNlCiAgICAgICAgIGluc2VydERvbWFpblJl
bGF0aW9uc2hpcHMoc3RhdGlzdGljLnZhbHVlKTsKIH0KIAordm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiBjdXJy
ZW50LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBvdGhlcikKK3sKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8gY3VycmVudFJlZ2lzdHJhYmxlRG9tYWlu
ID0gY3VycmVudC5nZXRDb2x1bW5UZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgpOworICAgIGF1
dG8gY3VycmVudExhc3RTZWVuID0gY3VycmVudC5nZXRDb2x1bW5Eb3VibGUoTGFzdFNlZW5JbmRl
eCk7CisgICAgYXV0byBjdXJyZW50TW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiA9IGN1cnJlbnQu
Z2V0Q29sdW1uRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgpOworICAg
IGJvb2wgY3VycmVudEdyYW5kZmF0aGVyZWQgPSBjdXJyZW50LmdldENvbHVtbkludChHcmFuZGZh
dGhlcmVkSW5kZXgpOworICAgIGJvb2wgY3VycmVudElzUHJldmFsZW50ID0gY3VycmVudC5nZXRD
b2x1bW5JbnQoSXNQcmV2YWxlbnRJbmRleCk7CisgICAgYm9vbCBjdXJyZW50SXNWZXJ5UHJldmFs
ZW50ID0gY3VycmVudC5nZXRDb2x1bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgpOworICAgIHVu
c2lnbmVkIGN1cnJlbnREYXRhUmVjb3Jkc1JlbW92ZWQgPSBjdXJyZW50LmdldENvbHVtbkludChE
YXRhUmVjb3Jkc1JlbW92ZWRJbmRleCk7CisKKyAgICBBU1NFUlQoY3VycmVudFJlZ2lzdHJhYmxl
RG9tYWluID09IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKTsKKworICAgIGlmIChX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoY3VycmVudExhc3RTZWVuKSA8IG90aGVyLmxhc3RTZWVu
KQorICAgICAgICB1cGRhdGVMYXN0U2VlbihvdGhlci5yZWdpc3RyYWJsZURvbWFpbiwgb3RoZXIu
bGFzdFNlZW4pOworCisgICAgaWYgKCFvdGhlci5oYWRVc2VySW50ZXJhY3Rpb24pIHsKKyAgICAg
ICAgLy8gSWYgbW9zdCByZWNlbnQgdXNlciBpbnRlcmFjdGlvbiB0aW1lIGhhcyBiZWVuIHJlc2V0
IGRvIHNvIGhlcmUgdG9vLgorICAgICAgICBpZiAoIW90aGVyLm1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb25UaW1lKQorICAgICAgICAgICAgc2V0VXNlckludGVyYWN0aW9uKG90aGVyLnJlZ2lzdHJh
YmxlRG9tYWluLCBmYWxzZSwgeyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2V0VXNlckludGVy
YWN0aW9uKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLCB0cnVlLCBzdGQ6Om1heChXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMoY3VycmVudE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24pLCBvdGhlci5t
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkpOworCisgICAgaWYgKG90aGVyLmdyYW5kZmF0
aGVyZWQgJiYgIWN1cnJlbnRHcmFuZGZhdGhlcmVkKQorICAgICAgICBzZXRHcmFuZGZhdGhlcmVk
KG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLCB0cnVlKTsKKyAgICBpZiAob3RoZXIuaXNQcmV2YWxl
bnRSZXNvdXJjZSAmJiAhY3VycmVudElzUHJldmFsZW50KQorICAgICAgICBzZXRQcmV2YWxlbnRS
ZXNvdXJjZShvdGhlci5yZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKG90aGVyLmlzVmVyeVBy
ZXZhbGVudFJlc291cmNlICYmICFjdXJyZW50SXNWZXJ5UHJldmFsZW50KQorICAgICAgICBzZXRW
ZXJ5UHJldmFsZW50UmVzb3VyY2Uob3RoZXIucmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChv
dGhlci5kYXRhUmVjb3Jkc1JlbW92ZWQgPiBjdXJyZW50RGF0YVJlY29yZHNSZW1vdmVkKQorICAg
ICAgICB1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQob3RoZXIucmVnaXN0cmFibGVEb21haW4sIG90
aGVyLmRhdGFSZWNvcmRzUmVtb3ZlZCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIHN0YXRpc3RpYykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IFNRTGl0ZVN0YXRlbWVudCBmZXRjaE9sZFN0YXRpc3RpY0RhdGEobV9kYXRhYmFzZSwgIlNFTEVD
VCAqIEZST00gT2JzZXJ2ZWREb21haW5zIHdoZXJlIHJlZ2lzdHJhYmxlRG9tYWluID0gPyIpOwor
ICAgIGlmIChmZXRjaE9sZFN0YXRpc3RpY0RhdGEucHJlcGFyZSgpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBmZXRjaE9sZFN0YXRpc3RpY0RhdGEuYmluZFRleHQoMSwgc3RhdGlzdGljLnJlZ2lz
dHJhYmxlRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgZmV0Y2hPbGRT
dGF0aXN0aWNEYXRhLnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpYy4gU3RhdGVtZW50IGZhaWxlZCB0byBiaW5k
IG9yIGRvbWFpbiB3YXMgbm90IGZvdW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1lcmdlKGZldGNoT2xkU3RhdGlz
dGljRGF0YSwgc3RhdGlzdGljKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiYmIHN0YXRpc3RpY3MpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAg
ICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IHN0YXRpc3RpY3MpIHsKKyAgICAgICAgaWYgKCFkb21h
aW5JRChzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICAgICAgaW5zZXJ0T2Jz
ZXJ2ZWREb21haW4oc3RhdGlzdGljKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVyZ2VT
dGF0aXN0aWMoc3RhdGlzdGljKTsKKyAgICB9CisKKyAgICAvLyBNYWtlIGEgc2VwYXJhdGUgcGFz
cyBmb3IgaW50ZXItZG9tYWluIHJlbGF0aW9uc2hpcHMgc28gd2UKKyAgICAvLyBjYW4gcmVmZXIg
dG8gdGhlIE9ic2VydmVkRG9tYWluIHRhYmxlIGVudHJpZXMuCisgICAgZm9yIChhdXRvJiBzdGF0
aXN0aWMgOiBzdGF0aXN0aWNzKQorICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKHN0
YXRpc3RpYyk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CkBAIC01NDEsNyArNjIxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFp
bnMKICAgICBTUUxpdGVTdGF0ZW1lbnQgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50KG1fZGF0YWJh
c2UsIG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGRhdGFSZWNvcmRzUmVt
b3ZlZCA9IGRhdGFSZWNvcmRzUmVtb3ZlZCArIDEgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gSU4g
KCIsIGRvbWFpbnNUb1N0cmluZyhkb21haW5zKSwgIikiKSk7CiAgICAgaWYgKGRvbWFpbnNUb1Vw
ZGF0ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGRvbWFpbnNU
b1VwZGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY3JlbWVudFN0YXRpc3RpY3NGb3JEb21haW5zIGZhaWxl
ZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklE
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jcmVtZW50U3Rh
dGlzdGljc0ZvckRvbWFpbnMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiB9CkBAIC01NjEsNyArNjQxLDcgQEAgdW5zaWduZWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFp
bnMKICAgICBTUUxpdGVTdGF0ZW1lbnQgZmluZFN1YnJlc291cmNlcyhtX2RhdGFiYXNlLCAiU0VM
RUNUIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5mcm9tRG9tYWluSUQgZnJvbSBTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gSU5ORVIgSk9JTiBPYnNlcnZlZERvbWFpbnMgT04g
T2JzZXJ2ZWREb21haW5zLmRvbWFpbklEID0gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
LmZyb21Eb21haW5JRCBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyBBTkQgT2JzZXJ2ZWRE
b21haW5zLmlzUHJldmFsZW50ID0gMCJfcyk7CiAgICAgaWYgKGZpbmRTdWJyZXNvdXJjZXMucHJl
cGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBmaW5kU3VicmVzb3VyY2VzLmJpbmRJbnQo
MSwgcHJpbWFyeURvbWFpbklEKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVk
aXJlY3RlZFRvVGhpc0RvbWFpbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJl
Y3RlZFRvVGhpc0RvbWFpbiBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC01NzYsNyArNjU2LDcgQEAgdW5zaWdu
ZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5v
blByZXZhbGVudERvbWFpbnMKICAgICBTUUxpdGVTdGF0ZW1lbnQgZmluZFRvcEZyYW1lcyhtX2Rh
dGFiYXNlLCAiU0VMRUNUIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbS5mcm9tRG9tYWluSUQg
ZnJvbSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20gSU5ORVIgSk9JTiBPYnNlcnZlZERvbWFp
bnMgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFpbklEID0gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNG
cm9tLmZyb21Eb21haW5JRCBXSEVSRSB0YXJnZXREb21haW5JRCA9ID8gQU5EIE9ic2VydmVkRG9t
YWlucy5pc1ByZXZhbGVudCA9IDAiX3MpOwogICAgIGlmIChmaW5kVG9wRnJhbWVzLnByZXBhcmUo
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZmluZFRvcEZyYW1lcy5iaW5kSW50KDEsIHByaW1h
cnlEb21haW5JRCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRU
b1RoaXNEb21haW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1Ro
aXNEb21haW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNjI5LDcgKzcwOSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3Rl
ZFRvUHJldmFsCiAgICAgU1FMaXRlU3RhdGVtZW50IG1hcmtQcmV2YWxlbnRTdGF0ZW1lbnQobV9k
YXRhYmFzZSwgbWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxl
bnQgPSAxIFdIRVJFIGRvbWFpbklEIElOICgiLCBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdl
PFN0ZFNldDx1bnNpZ25lZD46Oml0ZXJhdG9yPihwcmV2YWxlbnREdWVUb1JlZGlyZWN0LmJlZ2lu
KCksIHByZXZhbGVudER1ZVRvUmVkaXJlY3QuZW5kKCkpKSwgIikiKSk7CiAgICAgaWYgKG1hcmtQ
cmV2YWxlbnRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtYXJr
UHJldmFsZW50U3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9Q
cmV2YWxlbnQgZmFpbGVkIHRvIGV4ZWN1dGUsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50IGZh
aWxlZCB0byBleGVjdXRlLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiB9CkBAIC03NzQsMTIgKzg1NCwxMiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmCiAKICAg
ICBzd2l0Y2ggKGNvb2tpZVRyZWF0bWVudEZvck9yaWdpbihzdWJGcmFtZURvbWFpbikpIHsKICAg
ICBjYXNlIENvb2tpZVRyZWF0bWVudFJlc3VsdDo6QmxvY2tBbmRQdXJnZTogewotICAgICAgICBS
RUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJDYW5u
b3QgZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwdWJsaWN9cyBzaW5jZSBpdHMgY29va2llcyBh
cmUgYmxvY2tlZCBpbiB0aGlyZC1wYXJ0eSBjb250ZXh0cyBhbmQgaXQgaGFzIG5vdCByZWNlaXZl
ZCB1c2VyIGludGVyYWN0aW9uIGFzIGZpcnN0LXBhcnR5LiIsIHN1YkZyYW1lRG9tYWluLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9n
Z2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJDYW5ub3QgZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8g
JXtwcml2YXRlfXMgc2luY2UgaXRzIGNvb2tpZXMgYXJlIGJsb2NrZWQgaW4gdGhpcmQtcGFydHkg
Y29udGV4dHMgYW5kIGl0IGhhcyBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbiBhcyBmaXJz
dC1wYXJ0eS4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFj
Y2Vzcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ29va2llVHJlYXRt
ZW50UmVzdWx0OjpCbG9ja0FuZEtlZXA6IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihk
ZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIElUUERlYnVnLCAiTm8gbmVlZCB0byBncmFudCBzdG9yYWdl
IGFjY2VzcyB0byAle3B1YmxpY31zIHNpbmNlIGl0cyBjb29raWVzIGFyZSBub3QgYmxvY2tlZCBp
biB0aGlyZC1wYXJ0eSBjb250ZXh0cy4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVk
KCksIElUUERlYnVnLCAiTm8gbmVlZCB0byBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3ByaXZh
dGV9cyBzaW5jZSBpdHMgY29va2llcyBhcmUgbm90IGJsb2NrZWQgaW4gdGhpcmQtcGFydHkgY29u
dGV4dHMuIiwgc3ViRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2Vzcyk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtNzkwLDE5ICs4NzAsMTkgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJgogCiAgICAgYXV0byB1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyID0gaGFzVXNlckdy
YW50ZWRTdG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdChzdWJGcmFtZVN0YXR1cy5zZWNvbmQsIHRv
cEZyYW1lRG9tYWluKTsKICAgICBpZiAodXNlcldhc1Byb21wdGVkRWFybGllciA9PSBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYo
ZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBJVFBEZWJ1ZywgIkFib3V0IHRvIGFzayB0aGUgdXNlciB3
aGV0aGVyIHRoZXkgd2FudCB0byBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3B1YmxpY31zIHVu
ZGVyICV7cHVibGljfXMgb3Igbm90LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHRvcEZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJBYm91
dCB0byBhc2sgdGhlIHVzZXIgd2hldGhlciB0aGV5IHdhbnQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nl
c3MgdG8gJXtwcml2YXRlfXMgdW5kZXIgJXtwcml2YXRlfXMgb3Igbm90LiIsIHN1YkZyYW1lRG9t
YWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRvcEZyYW1lRG9tYWluLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVz
OjpSZXF1aXJlc1VzZXJQcm9tcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZ
ZXMpCi0gICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBJ
VFBEZWJ1ZywgIlN0b3JhZ2UgYWNjZXNzIHdhcyBncmFudGVkIHRvICV7cHVibGljfXMgdW5kZXIg
JXtwdWJsaWN9cy4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0b3BG
cmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
SU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIElUUERlYnVnLCAiU3RvcmFnZSBhY2Nlc3Mg
d2FzIGdyYW50ZWQgdG8gJXtwcml2YXRlfXMgdW5kZXIgJXtwcml2YXRlfXMuIiwgc3ViRnJhbWVE
b21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKICAgICBTUUxpdGVTdGF0ZW1lbnQgaW5jcmVtZW50U3RvcmFnZUFjY2Vz
cyhtX2RhdGFiYXNlLCAiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgdGltZXNBY2Nlc3NlZEFz
Rmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSA9IHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFy
dHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgKyAxIFdIRVJFIGRvbWFpbklEID0gPyIpOwogICAgIGlm
IChpbmNyZW1lbnRTdG9yYWdlQWNjZXNzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
fHwgaW5jcmVtZW50U3RvcmFnZUFjY2Vzcy5iaW5kSW50KDEsIHN1YkZyYW1lU3RhdHVzLnNlY29u
ZCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGluY3JlbWVudFN0b3JhZ2VBY2Nlc3Muc3RlcCgp
ICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04MjUsNyAr
OTA1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW4KICAgICBpZiAoY29va2llVHJlYXRtZW50
Rm9yT3JpZ2luKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcykgIT0gQ29va2llVHJlYXRtZW50
UmVzdWx0OjpBbGxvdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSU5GT19J
RihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIElUUERlYnVnLCAiW1RlbXBvcmFyeSBjb21iYXRpYmls
aXR5IGZpeF0gU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgZm9yICV7cHVibGljfXMgdW5kZXIg
b3BlbmVyIHBhZ2UgZnJvbSAle3B1YmxpY31zLCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gaW4gdGhl
IG9wZW5lZCB3aW5kb3cuIiwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIG9wZW5lckRvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBS
RUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJbVGVt
cG9yYXJ5IGNvbWJhdGliaWxpdHkgZml4XSBTdG9yYWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCBmb3Ig
JXtwcml2YXRlfXMgdW5kZXIgb3BlbmVyIHBhZ2UgZnJvbSAle3ByaXZhdGV9cywgd2l0aCB1c2Vy
IGludGVyYWN0aW9uIGluIHRoZSBvcGVuZWQgd2luZG93LiIsIGRvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2Vzcy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBvcGVuZXJEb21haW4uc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVs
bG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBbXShT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0KIApAQCAtODgyLDcgKzk2Miw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW5kZmF0aGVyRGF0YUZv
ckRvbWFpbnMoY29uc3QgSGFzaFNlCiAgICAgU1FMaXRlU3RhdGVtZW50IGRvbWFpbnNUb1VwZGF0
ZVN0YXRlbWVudChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5z
IFNFVCBncmFuZGZhdGhlcmVkID0gMSBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBJTiAoIiwgZG9t
YWluc1RvU3RyaW5nKGRvbWFpbnMpLCAiKSIpKTsKICAgICBpZiAoZG9tYWluc1RvVXBkYXRlU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZG9tYWluc1RvVXBkYXRl
U3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Z3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1l
c3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFp
bnMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9
CkBAIC05MDUsNyArOTg1LDcgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlUHJldmFsZW50UmUKICAgICAgICAgZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZGVidWdNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZSgpKTsKICAgICAgICAgc2V0UHJldmFsZW50UmVzb3VyY2UoZGVidWdNYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSgpLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlOjpIaWdoKTsKICAg
ICAgICAgcHJpbWFyeURvbWFpbnNUb0Jsb2NrLnVuY2hlY2tlZEFwcGVuZChkZWJ1Z01hbnVhbFBy
ZXZhbGVudFJlc291cmNlKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JTkZPKElUUERlYnVnLCAi
RGlkIHNldCAle3B1YmxpY31zIGFzIHByZXZhbGVudCByZXNvdXJjZSBmb3IgdGhlIHB1cnBvc2Vz
IG9mIElUUCBEZWJ1ZyBNb2RlLiIsIGRlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhJVFBEZWJ1Zywg
IkRpZCBzZXQgJXtwcml2YXRlfXMgYXMgcHJldmFsZW50IHJlc291cmNlIGZvciB0aGUgcHVycG9z
ZXMgb2YgSVRQIERlYnVnIE1vZGUuIiwgZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAogICAgIHJldHVybiBwcmltYXJ5RG9tYWlu
c1RvQmxvY2s7CkBAIC05ODMsNyArMTA2Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNldFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvCiAg
ICAgICAgIHx8IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kRG91Ymxl
KDIsIG1vc3RSZWNlbnRJbnRlcmFjdGlvbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9
IFNRTElURV9PSwogICAgICAgICB8fCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQuYmluZFRleHQoMywgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwg
bV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9O
RSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0VXNlckludGVyYWN0
aW9uLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRVc2VySW50
ZXJhY3Rpb24sIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTAxMSw3ICsxMDkxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFi
bGUKICAgICBpZiAocmVtb3ZlU3RvcmFnZUFjY2Vzcy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAg
ICAgICAgIHx8IHJlbW92ZVN0b3JhZ2VBY2Nlc3MuYmluZEludCgxLCB0YXJnZXRSZXN1bHQuc2Vj
b25kKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgcmVtb3ZlU3RvcmFnZUFjY2Vzcy5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omxv
Z1VzZXJJbnRlcmFjdGlvbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uIGZhaWxlZCB0byBiaW5kLCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CkBAIC0xMDIyLDcgKzEx
MDIsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRV
c2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibAogCiAgICAgaWYgKG1faGFkVXNlckludGVy
YWN0aW9uU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09L
CiAgICAgICAgIHx8IG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX2hhZFVzZXJJ
bnRlcmFjdGlvblN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Om1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50IGZhaWxlZCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
IAogICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVu
dC5yZXNldCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3Vs
dCA9PSBTUUxJVEVfT0spOwpAQCAtMTA2MSw3ICsxMTQxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0
cmFibGUKICAgICBpZiAobV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5iaW5kSW50
KDEsIDEpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNl
U3RhdGVtZW50LmJpbmRUZXh0KDIsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAg
ICAgIHx8IG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElU
RV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX3VwZGF0ZVBy
ZXZhbGVudFJlc291cmNlU3RhdGVtZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCBmYWls
ZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTA3Myw3ICsxMTUzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGUKICAg
ICAgICAgaWYgKG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmJpbmRJbnQo
MSwgMSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRS
ZXNvdXJjZVN0YXRlbWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9P
SwogICAgICAgICAgICAgfHwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQu
c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6bV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgZmFpbGVkLCBl
cnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklE
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVWZXJ5
UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEw
OTQsNyArMTE3NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnNldERvbWFpbnNBc1ByZXZhbGVudChTdGRTZXQ8dW5zaWduZWQ+CiAgICAgU1FMaXRlU3RhdGVt
ZW50IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJVUERB
VEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhbGVudCA9IDEgV0hFUkUgZG9tYWluSUQgSU4g
KCIsIGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8U3RkU2V0PHVuc2lnbmVkPjo6aXRlcmF0
b3I+KGRvbWFpbnMuYmVnaW4oKSwgZG9tYWlucy5lbmQoKSkpLCAiKSIpKTsKICAgICBpZiAoZG9t
YWluc1RvVXBkYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwg
ZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50IGZhaWxl
ZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklE
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0Fz
UHJldmFsZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTE5LDcgKzExOTksNyBAQCBib29sIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihXZWJD
b3JlOjpTUUxpdAogICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBwcmVkaWNhdGVTdGF0ZW1lbnQu
cmVzZXQoKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQg
PT0gU1FMSVRFX09LKTsKIAotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJl
ZGljYXRlVmFsdWVGb3JEb21haW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVi
bGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVlRm9yRG9tYWluIGZhaWxlZCB0byBi
aW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTc4LDcgKzEy
NTgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYgogICAgIAogICAgIGlmIChtX2NsZWFyUHJl
dmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgbV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSwgZXJyb3IgbWVzc2FnZTogJXtwcml2
YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTk0LDkgKzEyNzQs
OSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZh
dGhlcmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbik7CiAgICAgCiAgICAgaWYgKG1fdXBkYXRlR3Jh
bmRmYXRoZXJlZFN0YXRlbWVudC5iaW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgbV91cGRhdGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5z
dHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0
YXRlbWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAg
ICB8fCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05F
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVk
IGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzZXRHcmFuZGZhdGhlcmVkIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksNyArMTM2OSw3
IEBAIHN0ZDo6cGFpcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6QWRkZWRS
ZWNvcmQsIHVuc2lnbmVkPiBSZXNvdXJjZUxvCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKICAgICBpZiAobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuYmluZFRleHQoMSwg
ZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4gZmFpbGVkLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHsgQWRkZWRSZWNvcmQ6
Ok5vLCAwIH07CiAgICAgfQpAQCAtMTMxNiw3ICsxMzk2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJEYXRhYmFzZUNvbnRlbnRzKCkKICAgICBtX2Rh
dGFiYXNlLmNsZWFyQWxsVGFibGVzKCk7CiAKICAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMgZmFpbGVkLCBlcnJvciBt
ZXNzYWdlOiAle3B1YmxpY31zLCBkYXRhYmFzZSBwYXRoOiAle3B1YmxpY31zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyBmYWlsZWQs
IGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zLCBkYXRhYmFzZSBwYXRoOiAle3ByaXZhdGV9cyIs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgu
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTM0NSw3ICsxNDI1LDcgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OkNvb2tpZVRyZWF0bWVudFJlc3VsdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWMKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgaXNQ
cmV2YWxlbnQsIGhhZFVzZXJJbnRlcmFjdGlvbiBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSBy
ZWdpc3RyYWJsZURvbWFpbiA9ID8iKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgc3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmco
KSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpj
b29raWVUcmVhdG1lbnRGb3JPcmlnaW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7
cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZVRyZWF0bWVudEZvck9yaWdpbiBmYWlsZWQg
dG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAg
IApAQCAtMTQ5Nyw3ICsxNTc3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Y2xlYXJFeHBpcmVkVXNlckludGVyYWN0aW9ucygpCiAKICAgICBpZiAoY2xlYXJF
eHBpcmVkSW50ZXJhY3Rpb24uc3RlcCgpICE9IFNRTElURV9ET05FCiAgICAgICAgIHx8IHJlbW92
ZVN0b3JhZ2VBY2Nlc3Muc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjbGVhckV4cGlyZWRVc2VySW50ZXJhY3Rpb25zIHN0YXRlbWVudChzKSBmYWlsZWQgdG8g
c3RlcCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJFeHBpcmVkVXNlckludGVyYWN0
aW9ucyBzdGF0ZW1lbnQocykgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KQEAgLTE1MTYsNyArMTU5Niw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3JhbmRmYXRoZXJpbmcoVmVjdG9y
PHVuc2lnbmVkPiYmCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoY2xlYXJHcmFuZGZh
dGhlcmluZ1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3JhbmRmYXRoZXJpbmcgZmFpbGVkIHRvIGJpbmQs
IGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3JhbmRmYXRo
ZXJpbmcgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KIH0KQEAgLTE1OTYsNyArMTY3Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKICAgICBTUUxpdGVT
dGF0ZW1lbnQgcmVjb3Jkc1RvUHJ1bmUobV9kYXRhYmFzZSwgIlNFTEVDVCBkb21haW5JRCBGUk9N
IE9ic2VydmVkRG9tYWlucyBPUkRFUiBCWSBoYWRVc2VySW50ZXJhY3Rpb24sIGlzUHJldmFsZW50
LCBsYXN0U2VlbiBMSU1JVCA/Iik7CiAgICAgaWYgKHJlY29yZHNUb1BydW5lLnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgfHwgcmVjb3Jkc1RvUHJ1bmUuYmluZEludCgxLCBjb3VudExl
ZnRUb1BydW5lKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0
d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3Rh
dGlzdGljc0lmTmVlZGVkIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVT
dGF0aXN0aWNzSWZOZWVkZWQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2MTAsNyArMTY5MCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVl
ZGVkKCkKICAgICBTUUxpdGVTdGF0ZW1lbnQgcHJ1bmVDb21tYW5kKG1fZGF0YWJhc2UsIG1ha2VT
dHJpbmcoIkRFTEVURSBmcm9tIE9ic2VydmVkRG9tYWlucyBXSEVSRSBkb21haW5JRCBJTiAoIiwg
bGlzdFRvUHJ1bmUsICIpIikpOwogICAgIGlmIChwcnVuZUNvbW1hbmQucHJlcGFyZSgpICE9IFNR
TElURV9PSwogICAgICAgICB8fCBwcnVuZUNvbW1hbmQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5l
ZWRlZCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBy
dW5lU3RhdGlzdGljc0lmTmVlZGVkIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjIzLDcgKzE3MDMsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVMYXN0U2Vlbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbgogICAgIGlmIChtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50
LmJpbmREb3VibGUoMSwgbGFzdFNlZW4uc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudC5iaW5kVGV4dCgy
LCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3VwZGF0ZUxhc3RT
ZWVuU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlTGFzdFNlZW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1l
c3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuIGZhaWxlZCB0
byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTE2NjIsNiArMTc0MiwyMiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0
cgogICAgIHNldFByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgUmVzb3VyY2VMb2FkUHJldmFsZW5j
ZTo6VmVyeUhpZ2gpOwogfQogCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjp1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgaW50IHZhbHVlKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgaWYgKG1fdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFs
dWUpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0
YXRlbWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAg
ICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRF
X0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZURhdGFS
ZWNvcmRzUmVtb3ZlZCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgcmVzZXRSZXN1bHQg
PSBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5yZXNldCgpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggZjFkNTY1NWRlZWJjZGIwNDdjZGQ5
NmQyZTkzNTYzNGNlYWMwMWQzYS4uZWE3ZTY0OWZmZjVkMTZhYTg0YWUxYmUwNTI2YjZjNThjNTdk
MmUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFdvcmtR
dWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVj
dG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZvaWQgcG9wdWxhdGVGcm9tTWVtb3J5
U3RvcmUoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlJik7Ci0KKyAgICB2
b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJy
aWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xMDUsMTYgKzEw
NSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIFNlY29uZHMpIG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHZvaWQgbWVyZ2VTdGF0
aXN0aWMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworICAgIHZvaWQgbWVyZ2UoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwog
ICAgIHZvaWQgY2xlYXJEYXRhYmFzZUNvbnRlbnRzKCk7CiAgICAgYm9vbCBpbnNlcnRPYnNlcnZl
ZERvbWFpbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBpbnNlcnRE
b21haW5SZWxhdGlvbnNoaXBzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBi
b29sIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmLCB1
bnNpZ25lZCBkb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
KTsKICAgICBib29sIHJlbGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQm
LCBPcHRpb25hbDx1bnNpZ25lZD4gZmlyc3REb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHNlY29uZERvbWFpbikgY29uc3Q7CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGRvbWFpbklE
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGJv
b2wgY29uZmlybURvbWFpbkRvZXNOb3RFeGlzdChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNv
bnN0OwotI2VuZGlmCisgICAgYm9vbCBkb21haW5FeGlzdHMoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUxhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgV2FsbFRpbWUpOworICAgIHZvaWQgdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgaW50KTsKICAgICB2b2lkIHNldFVzZXJJbnRlcmFjdGlvbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBXYWxsVGlt
ZSk7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERlbGV0
ZUNvb2tpZXNGb3IoKSBjb25zdDsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFp
bnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoKSBjb25zdDsKQEAgLTE3NSw2ICsxNzYsNyBAQCBw
cml2YXRlOgogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2luc2VydFRvcExldmVsRG9t
YWluU3RhdGVtZW50OwogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZG9t
YWluSURGcm9tU3RyaW5nU3RhdGVtZW50OwogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBt
X3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudDsKKyAgICBXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQgbV9zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNFeGlz
dHNTdGF0ZW1lbnQ7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNUbzsKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3Rv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHM7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50IG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tOwpAQCAtMTkxLDYgKzE5Myw3IEBAIHBy
aXZhdGU6CiAgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c0Zyb21FeGlzdHM7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudDsKICAgICBXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudDsK
ICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0
YXRlbWVudDsKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2lzUHJldmFs
ZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBk
YXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCA2NWI4NzgwMzA3YWI1NmIz
YjRjN2Y4N2JmMzI4ZTUzMzQ5NTNiN2IwLi42Y2ViYjEwYTBkODc3MmJlMDZmYTRlZDkzMzg4OTY5
ZWIxYjg3MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcApAQCAtNjkwLDE2ICs2OTAsNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZQogICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9jaywgW2Nh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9
CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjp3YXNBY2Nlc3NlZEFz
Rmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIGN1cnJlbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHVwZGF0ZWQpIGNvbnN0
Ci17Ci0gICAgaWYgKCFjdXJyZW50LmhhZFVzZXJJbnRlcmFjdGlvbiAmJiAhdXBkYXRlZC5oYWRV
c2VySW50ZXJhY3Rpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gbW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBzdGQ6Om1heChjdXJyZW50Lm1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25UaW1lLCB1cGRhdGVkLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKTsK
LQotICAgIHJldHVybiB1cGRhdGVkLmxhc3RTZWVuIDw9IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25UaW1lICsgMjRfaDsKLX0KLQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6Om1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0
aXN0aWNzKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNzA4LDExICs2
OTgsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bWVyZ2VTdGF0
aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aQogICAgICAgICBhdXRvIHJlc3VsdCA9IG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4s
IFsmc3RhdGlzdGljXSB7CiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShzdGF0aXN0aWMpOwog
ICAgICAgICB9KTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICAg
ICAgaWYgKHdhc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24ocmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSwgc3RhdGlzdGljKSkKLSAgICAgICAgICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlv
bisrOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5tZXJnZShzdGF0aXN0aWMpOwotICAgICAgICB9CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5k
ZXggODc5ZTFhZmNmYjg2MjI5NzY0NmI1MDA4MDZmZmM0ZjlhMGFhMDM0Ny4uNjgwNTRhNWMyMTQz
ZDY2ZThkODU1NjU0ZmE0OTY5YzNlMjJiMmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OktleWVkRW5jb2Rlcj4gY3JlYXRlRW5jb2RlckZy
b21EYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBtZXJnZVdpdGhEYXRhRnJvbURlY29kZXIoV2ViQ29y
ZTo6S2V5ZWREZWNvZGVyJik7CiAKLSAgICB2b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CisgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVjdG9y
PFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJvY2Vzc1N0
YXRpc3RpY3MoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Jik+JikgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CkBAIC0xMTcsNyArMTE3LDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIGhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0OwogICAgIGJvb2wgc2hv
dWxkUmVtb3ZlQWxsV2Vic2l0ZURhdGFGb3IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGJvb2wg
c2hvdWxkQ2hlY2tGb3JHcmFuZGZhdGhlcmluZykgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRSZW1v
dmVBbGxCdXRDb29raWVzRm9yKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBib29sIHNob3VsZENo
ZWNrRm9yR3JhbmRmYXRoZXJpbmcpIGNvbnN0OwotICAgIGJvb2wgd2FzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBj
dXJyZW50LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiB1cGRhdGVkKSBjb25zdDsKICAg
ICB2b2lkIGluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3Vy
Y2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAg
IHVuc2lnbmVkIHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhp
c0RvbWFpbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVk
VG9Eb21haW4+JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNmY2MWVkMzQzZGUyNjZh
YTM1ZjllYzBkYTc0MjExMDE5MzYyYWZkYS4uOTlhNjcxMDY2Njk2ZjRmZDI4NmZjZDdkMjA3NWI0
ZTc2NTk1M2ZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApA
QCAtMTA4LDYgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xhc3NpZnlQcmV2
YWxlbnRSZXNvdXJjZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNTdG9yYWdlSWZOZWVk
ZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4mJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZvaWQgcmVtb3Zl
QWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAyYmJlZGNiOTYz
N2ZlMzYxZmMzMDhlY2U0Njk2OTk3NDQxOWZiNjhjLi42ZWQ5MzM5M2NjYzI5NWJlZGNhM2VlNDAy
ZmZhOGZlYmVmNDBlNTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcApAQCAtMjY0LDE5ICsyNjQsMTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNv
dXIKICAgICAvLyBjb21pbmcgZnJvbSBJUEMuIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mgb25seSBj
b250YWlucyBzdHJpbmdzIHdoaWNoIGFyZSBzYWZlIHRvIG1vdmUgdG8gb3RoZXIgdGhyZWFkcyBh
cyBsb25nCiAgICAgLy8gYXMgbm9ib2R5IG9uIHRoaXMgdGhyZWFkIGhvbGRzIGEgcmVmZXJlbmNl
IHRvIHRob3NlIHN0cmluZ3MuCiAgICAgcG9zdFRhc2soW3RoaXMsIHN0YXRpc3RpY3MgPSBXVEZN
b3ZlKHN0YXRpc3RpY3MpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0
b3JlIHx8ICFpczxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRpc3Rp
Y3NTdG9yZSkpCisgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgYXV0byYgbWVtb3J5U3RvcmUgPSBkb3duY2FzdDxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSk7Ci0gICAgCi0gICAg
ICAgIG1lbW9yeVN0b3JlLm1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKHN0YXRpc3RpY3MpKTsKKyAg
ICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPm1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKHN0YXRpc3Rp
Y3MpKTsKIAogICAgICAgICAvLyBXZSBjYW4gY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3QgdG8g
cHJvY2VzcyBzdGF0aXN0aWNzIHNpbmNlIHdlJ3JlIGRvaW5nIGl0IHN5bmNocm9ub3VzbHkgYmVs
b3cuCi0gICAgICAgIG1lbW9yeVN0b3JlLmNhbmNlbFBlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2lu
Z1JlcXVlc3QoKTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNhbmNlbFBlbmRpbmdTdGF0
aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3QoKTsKIAogICAgICAgICAvLyBGaXJlIGJlZm9yZSBwcm9j
ZXNzaW5nIHN0YXRpc3RpY3MgdG8gcHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmFzdCBh
cyBwb3NzaWJsZSB0byB0aGUgbmV0d29yayBwcm9jZXNzLgotICAgICAgICBtZW1vcnlTdG9yZS51
cGRhdGVDb29raWVCbG9ja2luZyhbXSgpIHsgfSk7Ci0gICAgICAgIG1lbW9yeVN0b3JlLnByb2Nl
c3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUt
PnVwZGF0ZUNvb2tpZUJsb2NraW5nKFtdKCkgeyB9KTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3Rv
cmUtPnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKICAgICB9KTsKIH0KIApAQCAt
NTgzLDYgKzU4MSwzNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbgogICAgICAgICBwb3N0VGFz
a1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KKwordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9wRnJhbWVEb21haW4sIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9u
LCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVk
LCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJl
Y29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHBvc3RUYXNrKFt0
aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9w
RnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24s
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQs
IGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAobV9z
dGF0aXN0aWNzU3RvcmUpIHsKKyAgICAgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mgc3Rh
dGlzdGljKGRvbWFpbik7CisgICAgICAgICAgICBzdGF0aXN0aWMubGFzdFNlZW4gPSBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMobGFzdFNlZW4uc2Vjb25kcygpKTsKKyAgICAgICAgICAgIHN0YXRp
c3RpYy5oYWRVc2VySW50ZXJhY3Rpb24gPSBoYWRVc2VySW50ZXJhY3Rpb247CisgICAgICAgICAg
ICBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbi5zZWNvbmRzKCkpOworICAgICAg
ICAgICAgc3RhdGlzdGljLmdyYW5kZmF0aGVyZWQgPSBpc0dyYW5kZmF0aGVyZWQ7CisgICAgICAg
ICAgICBzdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IGlzUHJldmFsZW50OworICAgICAg
ICAgICAgc3RhdGlzdGljLmlzVmVyeVByZXZhbGVudFJlc291cmNlID0gaXNWZXJ5UHJldmFsZW50
OworICAgICAgICAgICAgc3RhdGlzdGljLmRhdGFSZWNvcmRzUmVtb3ZlZCA9IGRhdGFSZWNvcmRz
UmVtb3ZlZDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0b3BGcmFtZURvbWFpbi5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiB0
b3BGcmFtZURvbWFpbnM7CisgICAgICAgICAgICAgICAgdG9wRnJhbWVEb21haW5zLmFkZCh0b3BG
cmFtZURvbWFpbik7CisgICAgICAgICAgICAgICAgc3RhdGlzdGljLnN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbnMgPSBXVEZNb3ZlKHRvcEZyYW1lRG9tYWlucyk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOwor
ICAgICAgICAgICAgc3RhdGlzdGljcy5hcHBlbmQoV1RGTW92ZShzdGF0aXN0aWMpKTsKKyAgICAg
ICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5tZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0
aWNzKSk7CisgICAgICAgIH0KKyAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgfSk7Cit9CiAgICAgCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDJj
N2QzNzhiMDQzYzk1ZTE2NTU4N2U2NmE1Zjc0M2UwZjg5MjY2YzEuLjM2NDk4MTM2ODNhOWI4MmUy
ZDY0NDllMGU0NWMwNzQ4MWQ2Y2IyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKQEAgLTEyOSw2ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21h
aW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bik+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgbWVy
Z2VTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwg
U2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwg
Ym9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNv
cmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
Zyk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCBmNTJmNDBmYmRjZDZjZjkzOTNiZTkwNmQ0YjBjMjVlZDAxNGNjMWY3Li4zNzhk
OWQyNDRhNGRhOTFlOWE0NTQ2MTI3OGE1ZjVhNzAzZGU1MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtOTc0LDYgKzk3NCwxOSBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vz
czo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwg
U2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwg
Ym9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNv
cmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGRvbWFpbiwg
dG9wRnJhbWVEb21haW4sIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZh
bGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggOTBjZjczMmY3MmIzOTE4ZjY2YmNkMzVkMjA0NzI5MmEwMzYwMTNkNy4uM2E2MjU2ZjJmNDhm
YWZiZjZhN2JkY2FkZTIwOGJiZjI0ODc5MTU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjQyLDYgKzI0Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lv
bklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFNlY29uZHMg
bGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29s
IGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJl
Y29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZChQQUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBB
TDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggYTc3NjYzZTdjZjY0MTM4YjY3OTE4MGIxYzlhYzY0YjQ3Mzg5Yzcx
Yi4uMWVmOGZiYzBkYWMxNGYzNmI3N2ZjNzU5MWUyNDRiOWUzMjU5MTg3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC05NCw2ICs5NCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBJc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbikgLT4gKGJvb2wg
aXNWZXJ5UHJldmFsZW50KSBBc3luYwogICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykgLT4g
KCkgQXN5bmMKICAgICBTZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBTZWNvbmRzIHNlY29uZHMpIC0+
ICgpIEFzeW5jCisgICAgTWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBTZWNvbmRzIGxhc3RTZWVuLCBi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9u
LCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2
YWxlbnQsIHVpbnQ2NF90IGRhdGFSZWNvcmRzUmVtb3ZlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRQ
cmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgSGFkVXNl
ckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+IChib29sIGhhZFVzZXJJbnRlcmFjdGlvbikgQXN5
bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwCmluZGV4IDk2MGY5ZmIwZjIyYjllYzgwOWU2NTFiZWI5ZTVhNzYzMGM2
ZWQ5NTQuLjUxMmUwNWNjODViYzRlZTE4YWM1NjhmY2QzOTgzNzBjYmZlYmEyZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcApAQCAtMTE5LDYgKzExOSwxNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLAogI2Vu
ZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01lcmdlU3RhdGlz
dGljKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNl
ckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dy
YW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNp
Z25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQorewor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BG
cmFtZURvbWFpbiktPnN0cmluZygpKSwgU2Vjb25kcyB7IGxhc3RTZWVuIH0sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgU2Vjb25kcyB7IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24gfSwgaXNHcmFuZGZh
dGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQs
IFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4
dCk7CisjZW5kaWYKK30KKwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTI2MCw3ICsyNzEsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rvcgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc0dyYW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhh
c0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQpIHsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5pc0dyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aXNHcmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29u
dGV4dCk7CiAgICAgfSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBjY2Y1OTEzODlmYjkxNWYyMzUx
NmQzMDQ4YzllMjdkY2MxOTdlMzI1Li5mMmExNzgyOTZlYTc5ZWI0ZWY1NTdhYjBlMDc4YjlhZDZl
YTlhYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtNDksNiArNDksOCBAQCBXS19FWFBPUlQgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlV2l0aENvbXBs
ZXRpbwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7
ICAgIAogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVu
RnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdFNlZW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NMYXN0U2VlbkZ1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NN
ZXJnZVN0YXRpc3RpY0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5n
UmVmIHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0
aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVy
ZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRh
UmVjb3Jkc1JlbW92ZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NNZXJnZVN0YXRpc3RpY0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9p
ZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9u
KSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDMxYTcyNTdjMTAxYTEwMDU3MTI4YjY4NzViZDQzYjcwNmMz
NGU4NTMuLjM4MzBiMjUyYzFiNDhkYTc0MWE4NGI4NTlkYzg2ZTMxNDA4NWNkM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtNTM1LDYgKzUzNSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibAogICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldExhc3RTZWVu
KHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGxhc3RTZWVuKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om1lcmdlU3RhdGlzdGlj
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Ok1lcmdlU3RhdGlz
dGljRm9yVGVzdGluZyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbiwg
bGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwg
aXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jk
c1JlbW92ZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2Vu
ZE1lc3NhZ2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA2NDcxM2FiMWEwY2ZkMjZkZjJmODYxZGIxYTRh
ZTdhZjM4NmRiOTZmLi4yZDZhZGJlM2JhM2Q1ZmNlNWM5NmFlZjYzYWVmYmNmNmVmMmNkMDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1VzZXJJ
bnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFNlY29uZHMgbGFzdFNl
ZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVy
eVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVk
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaXNHcmFuZGZh
dGhlcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRl
eCA2OTM1NWQ3OTdjMjVjOGJjMjAxOTlmNzdhZDA4NjU0MDA1MDk2NGU0Li42MjdkMmQ5OWNiM2Vj
NzI3MGI4NzY3YmEzMDZkOGZiNTA5YThiZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTIxNCw2
ICsxMjE0LDI0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShj
b25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAgICAgfQogfQogCit2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGlzUHJldmFsZW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIAorICAgIGlmICh1cmwucHJvdG9j
b2xJc0Fib3V0KCkgfHwgdXJsLmlzRW1wdHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAgcHJvY2Vzcy0+aXNH
cmFuZGZhdGhlcmVkKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVy
bCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChwcm9jZXNzUG9vbHMoKS5zaXplKCkgPT0gMSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcmV2YWxlbnRS
ZXNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC0xNTMz
LDYgKzE1NTEsMjEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRMYXN0U2Vlbihjb25zdCBV
UkwmIHVybCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGEKICAgICB9CiB9CiAKK3ZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJs
ICwgY29uc3QgVVJMJiB0b3BGcmFtZVVybCwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2Vy
SW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dy
YW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNp
Z25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpIHx8IHVybC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdh
dG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBwcm9j
ZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBwcm9jZXNz
LT5tZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHsgdXJsIH0sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVV
cmwgfSwgbGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRh
UmVjb3Jkc1JlbW92ZWQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICB9Cit9CisKIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZh
bHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOGE1ZmViYTgzYjdk
YTBkY2M3NGI3OGM1YTAxOTJjMGY3ZjUyZWM3Zi4uMDE4MzdmZWEwMjc2ZjRiODRhNmFkYzRkZTUw
NGVlZDI1N2VhYWQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTU5LDkgKzE1OSwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwog
ICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmLCBib29sLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2V0VXNlSVRQRGF0YWJh
c2UoYm9vbCk7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFVSTCYs
IFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBtZXJnZVN0
YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgVVJMJiwgY29uc3QgVVJMJiB0b3BGcmFtZVVybCwgU2Vj
b25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQs
IGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJ1bmVFbnRyaWVzRG93blRv
KHNpemVfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNGI2YjY0ZDMwMWNmNjczOGMyNzY0
OThjYWEwNmI2OGJiMjU3ZTJlLi4wZTY5NTgzMzRlMjEwMGY5MzQ2ZTc3NWE3ZjY2MjYxZGVlOTBm
OTI3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTktMTAtMDEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5l
eUBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlZCByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mg
YXJlIG5ldmVyIG1lcmdlZCBpbnRvIHRoZSBTUUxpdGUgRGF0YWJhc2UgYmFja2VuZCAoMjAyMzcy
KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjM3
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU4NTQ1NDI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdGluZyBmdW5jdGlvbmFsaXR5
IHRvIHRoZSBtZXJnZVN0YXRpc3RpY3MoKSBmdW5jdGlvbiBvZiB0aGUgCisgICAgICAgIFNRTGl0
ZSBiYWNrZW5kLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjpzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjpzdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdlU3RhdGlzdGljQ2FsbGJhY2spOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246OmRpZE1lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMTktMDktMzAgIFpoaWZlaSBGYW5nICA8
emhpZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtyZXN1bHRzLndlYmtpdC5vcmcgVGlt
ZWxpbmVdIE5ldyBheGlzIHN0eWxlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBhMDFk
NGZiNTM5MGQ0YWQ0ZmM1NmY2ZGY4NjczNjliZjljNjZhNjkzLi40MmFhZDU0ZTMxMTNhMzgzZjcz
NDkxNzc0MTUyMTdjZWQ5OTBkNGFkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTI5
OCw2ICsyOTgsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0
aWNzRGVidWdNb2RlKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAg
ICAgdm9pZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoRE9NU3Ry
aW5nIGhvc3ROYW1lLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc2V0U3Rh
dGlzdGljc0xhc3RTZWVuKERPTVN0cmluZyBob3N0TmFtZSwgZG91YmxlIHNlY29uZHMsIG9iamVj
dCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0
aWMoRE9NU3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcgdG9wRnJhbWVEb21haW4sIGRvdWJsZSBs
YXN0U2VlbiwgYm9vbGVhbiBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uLCBib29sZWFuIGlzR3JhbmRmYXRoZXJlZCwgYm9vbGVhbiBpc1ByZXZhbGVu
dCwgYm9vbGVhbiBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGxvbmcgZGF0YVJlY29yZHNSZW1v
dmVkLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiB2YWx1ZSwgb2JqZWN0
IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50
UmVzb3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFuIHZhbHVlLCBvYmplY3QgY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIGJvb2xlYW4gaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
RE9NU3RyaW5nIGhvc3ROYW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggOWMxMGI0MDg0ZDliZjNk
OWZmZDRiZDA3YTVlYjVmZjQzZWNkOTRkOC4uMDFiNzU2MmQxYzBjOGQxMjM2OTM0MDY3MWZjMDJl
M2Q3ZTZhZTE5MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTM1Niw2ICszNTYsMTEgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERp
ZFNldExhc3RTZWVuQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRN
ZXJnZVN0YXRpc3RpYyIpKSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxE
aWRTZXRNZXJnZVN0YXRpc3RpY0NhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxE
aWRTZXRQcmV2YWxlbnRSZXNvdXJjZSIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlz
dGljc0NhbGxEaWRTZXRQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA4
MmRiNjc0Mjk5OWM3N2RiYmNmYzM1MjQ2NTQwNjU3NGJiMzYzNTE3Li4wMTEwNGFjZjg0YmFiMTI3
ZTUxNzNkMzc5MzJlNDI5OWFmYTNjMTU0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTczMiw2ICs3MzIsNyBAQCBl
bnVtIHsKICAgICBTZXRTdGF0aXN0aWNzRGVidWdNb2RlQ2FsbGJhY2tJRCwKICAgICBTZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGVDYWxsYmFja0lELAogICAgIFNldFN0
YXRpc3RpY3NMYXN0U2VlbkNhbGxiYWNrSUQsCisgICAgU2V0U3RhdGlzdGljc01lcmdlU3RhdGlz
dGljQ2FsbGJhY2tJRCwKICAgICBTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VDYWxsYmFj
a0lELAogICAgIFNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2VDYWxsYmFja0lELAog
ICAgIFNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb25DYWxsYmFja0lELApAQCAtMTQ1
Myw2ICsxNDU0LDU3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRMYXN0
U2VlbkNhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFNldFN0YXRpc3RpY3NM
YXN0U2VlbkNhbGxiYWNrSUQpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NN
ZXJnZVN0YXRpc3RpYyhKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYgdG9wRnJhbWVE
b21haW4sIGRvdWJsZSBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJD
YWxsYmFjayhTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNDYWxsYmFja0lELCBjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOwor
ICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisKKyAgICBrZXlzLmFw
cGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpKSk7
CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGhv
c3ROYW1lKSkpOworICAgIAorICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlRvcEZyYW1lRG9tYWluIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcodG9wRnJhbWVEb21haW4pKSk7CisKKyAg
ICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMYXN0
U2VlbiIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLRG91YmxlQ3JlYXRlKGxhc3RT
ZWVuKSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiSGFkVXNlckludGVyYWN0aW9uIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0
V0soV0tCb29sZWFuQ3JlYXRlKGhhZFVzZXJJbnRlcmFjdGlvbikpKTsKKworICAgIGtleXMuYXBw
ZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24iKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0RvdWJsZUNyZWF0
ZShtb3N0UmVjZW50VXNlckludGVyYWN0aW9uKSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNHcmFuZGZhdGhlcmVkIikpKTsKKyAg
ICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlzR3JhbmRmYXRoZXJlZCkp
KTsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIklzUHJldmFsZW50IikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFu
Q3JlYXRlKGlzUHJldmFsZW50KSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNWZXJ5UHJldmFsZW50IikpKTsKKyAgICB2YWx1ZXMu
YXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlzVmVyeVByZXZhbGVudCkpKTsKKworICAg
IGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRhdGFS
ZWNvcmRzUmVtb3ZlZCIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLVUludDY0Q3Jl
YXRlKGRhdGFSZWNvcmRzUmVtb3ZlZCkpKTsKKworICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4gcmF3
S2V5cyhrZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzKHZhbHVl
cy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIHJhd0tleXNbaV0gPSBrZXlzW2ldLmdldCgpOworICAgICAgICByYXdWYWx1
ZXNbaV0gPSB2YWx1ZXNbaV0uZ2V0KCk7CisgICAgfQorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyIpKTsKKyAgICBXS1JldGFpblB0cjxXS0RpY3Rp
b25hcnlSZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5
cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7CisgICAgV0tCdW5k
bGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30K
Kwordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdlU3RhdGlzdGljQ2Fs
bGJhY2soKQoreworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc01lcmdl
U3RhdGlzdGljQ2FsbGJhY2tJRCk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlLCBKU1Zh
bHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNr
KFNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5k
bGVyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKaW5kZXggNDllNWZmMDg3NjA2NzlmOGY3M2I1NWNlZDlmZmM3NTUwYTFkNmJkZi4u
ZjE3MDAxMjk4MzFiNmY5NDcwNzYyZjAzMGZlY2Q3MDFjNGQzYmEzYiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTM5Niw2
ICszOTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlQ2FsbGJhY2soKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NM
YXN0U2VlbihKU1N0cmluZ1JlZiBob3N0TmFtZSwgZG91YmxlIHNlY29uZHMsIEpTVmFsdWVSZWYg
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRMYXN0U2Vl
bkNhbGxiYWNrKCk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoSlNTdHJp
bmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFzdFNl
ZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5
UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIEpTVmFsdWVSZWYgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRNZXJnZVN0YXRpc3Rp
Y0NhbGxiYWNrKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoSlNT
dHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRs
ZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRQcmV2YWxlbnRSZXNvdXJjZUNhbGxi
YWNrKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKEpTU3Ry
aW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVy
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZTdkYmUz
ODc3ZGMxMmY3ZTI4NmEzMzJlNzE4YzRiNTM0ZDljYTAzNy4uMGJkNzc2MWJiZmM1NTA0ZWYyMDU5
ZDlhMWYzYjQ0NzU3NjA3NGUwYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKQEAgLTMyNjEsNiArMzI2MSwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRT
dGF0aXN0aWNzTGFzdFNlZW4oV0tTdHJpbmdSZWYgaG9zdCwgZG91YmxlIHNlY29uZHMpCiAgICAg
bV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0TGFzdFNlZW4oKTsKIH0KIAordm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3QsIFdL
U3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlcklu
dGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5k
ZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCBpbnQgZGF0
YVJlY29yZHNSZW1vdmVkKQoreworICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4
dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWVy
Z2VTdGF0aXN0aWMoVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwgaG9zdCwgdG9w
RnJhbWVEb21haW4sIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVu
dCwgZGF0YVJlY29yZHNSZW1vdmVkLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9pZFJl
c3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7Cisg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkTWVyZ2VTdGF0aXN0aWMoKTsKK30KKwogdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVm
IGhvc3QsIGJvb2wgdmFsdWUpCiB7CiAgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250
ZXh0IGNvbnRleHQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CmluZGV4IGZkMWM1MmFhNDBhZjI2ZDRkZDBkODYyYTIwMzk2Njg3YzI2ODcyMGYuLjZjMmQyZDg4
NmUwM2I3N2I2MmJlNTUzOGEyMmI5YjBlOGQ0YzQxZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKQEAgLTIxMCw2ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgZG91Ymxl
IHNlY29uZHMpOworICAgIHZvaWQgc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLU3RyaW5n
UmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFzdFNlZW4sIGJv
b2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwg
Ym9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFs
ZW50LCBpbnQgZGF0YVJlY29yZHNSZW1vdmVkKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1l
LCBib29sIHZhbHVlKTsKICAgICBTdHJpbmcgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggYzRkMThhYmQ5
YTVjNGFjMzNiZjJhZTAyNmMyOGZiMGU2MjJlM2E3My4uMmY4YjMwNmUyYzhjODczZmZkMzE3OTYx
YzgxMmM1YmM4ODJiNjNjZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKQEAgLTExMDAsNiArMTEwMCwzNiBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMi
KSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlv
bmFyeUdldFR5cGVJRCgpKTsKKworICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlE
aWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7Cisg
ICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBob3N0TmFtZUtleSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lIikpOworICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gdG9wRnJhbWVEb21haW5LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJUb3BGcmFtZURvbWFpbiIpKTsKKyAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGxhc3RTZWVuS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiTGFzdFNlZW4iKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBoYWRVc2VySW50ZXJhY3Rpb25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJIYWRVc2VySW50ZXJhY3Rpb24iKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiIpKTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGlzR3JhbmRmYXRoZXJlZEtleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzR3JhbmRmYXRoZXJlZCIpKTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGlzUHJldmFsZW50S2V5ID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNQcmV2YWxlbnQiKSk7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBpc1ZlcnlQcmV2YWxlbnRLZXkgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1ZlcnlQcmV2YWxlbnQiKSk7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBkYXRhUmVjb3Jkc1JlbW92ZWRLZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEYXRhUmVjb3Jkc1JlbW92ZWQiKSk7CisgICAgICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0aW1lc0FjY2Vzc2VkRmlyc3RQYXJ0eUludGVyYWN0
aW9uS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGltZXNBY2Nl
c3NlZEZpcnN0UGFydHlJbnRlcmFjdGlvbiIpKTsKKworICAgICAgICBXS1N0cmluZ1JlZiBob3N0
TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tT
dHJpbmdSZWYgdG9wRnJhbWVEb21haW4gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHRvcEZyYW1lRG9tYWlu
S2V5LmdldCgpKSk7CisgICAgICAgIFdLRG91YmxlUmVmIGxhc3RTZWVuID0gc3RhdGljX2Nhc3Q8
V0tEb3VibGVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9u
YXJ5LCBsYXN0U2VlbktleS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgaGFkVXNlcklu
dGVyYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaGFkVXNlckludGVyYWN0aW9uS2V5LmdldCgp
KSk7CisgICAgICAgIFdLRG91YmxlUmVmIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24gPSBzdGF0
aWNfY2FzdDxXS0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9k
eURpY3Rpb25hcnksIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25LZXkuZ2V0KCkpKTsKKyAgICAg
ICAgV0tCb29sZWFuUmVmIGlzR3JhbmRmYXRoZXJlZCA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGlzR3Jh
bmRmYXRoZXJlZEtleS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgaXNQcmV2YWxlbnQg
PSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCBpc1ByZXZhbGVudEtleS5nZXQoKSkpOworICAgICAgICBXS0Jv
b2xlYW5SZWYgaXNWZXJ5UHJldmFsZW50ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaXNWZXJ5UHJldmFs
ZW50S2V5LmdldCgpKSk7CisgICAgICAgIFdLVUludDY0UmVmIGRhdGFSZWNvcmRzUmVtb3ZlZCA9
IHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgZGF0YVJlY29yZHNSZW1vdmVkS2V5LmdldCgpKSk7CisgICAgICAg
IAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc01lcmdl
U3RhdGlzdGljKGhvc3ROYW1lLCB0b3BGcmFtZURvbWFpbiwgV0tEb3VibGVHZXRWYWx1ZShsYXN0
U2VlbiksIFdLQm9vbGVhbkdldFZhbHVlKGhhZFVzZXJJbnRlcmFjdGlvbiksIFdLRG91YmxlR2V0
VmFsdWUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiksIFdLQm9vbGVhbkdldFZhbHVlKGlzR3Jh
bmRmYXRoZXJlZCksIFdLQm9vbGVhbkdldFZhbHVlKGlzUHJldmFsZW50KSwgV0tCb29sZWFuR2V0
VmFsdWUoaXNWZXJ5UHJldmFsZW50KSwgV0tVSW50NjRHZXRWYWx1ZShkYXRhUmVjb3Jkc1JlbW92
ZWQpKTsKKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCiAgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2UiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJv
ZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKIApAQCAtMTgwMSw2ICsxODMxLDEyIEBA
IHZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldExhc3RTZWVuKCkKICAgICBXS1BhZ2VQb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCit2b2lkIFRlc3RJbnZv
Y2F0aW9uOjpkaWRNZXJnZVN0YXRpc3RpYygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Q2FsbERpZE1lcmdlU3RhdGlzdGljIikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFNl
dFByZXZhbGVudFJlc291cmNlKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlk
U2V0UHJldmFsZW50UmVzb3VyY2UiKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmgKaW5kZXggNzZhYTliOGUxZGMwMmVjOGFkOTM4Njk0MTU3NDU4ZjE5NWRhM2NkNi4uYTI2
NWViOWIyNmU5NGQxZTRhOGZmZGNlZjVkZTI5NDM5NTFiYjQwNSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRTZXRTdGF0aXN0aWNzRGVidWdNb2RlKCk7CiAgICAgdm9pZCBkaWRTZXRQcmV2YWxlbnRS
ZXNvdXJjZUZvckRlYnVnTW9kZSgpOwogICAgIHZvaWQgZGlkU2V0TGFzdFNlZW4oKTsKKyAgICB2
b2lkIGRpZE1lcmdlU3RhdGlzdGljKCk7CiAgICAgdm9pZCBkaWRTZXRQcmV2YWxlbnRSZXNvdXJj
ZSgpOwogICAgIHZvaWQgZGlkU2V0VmVyeVByZXZhbGVudFJlc291cmNlKCk7CiAgICAgdm9pZCBk
aWRTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMGNjYTFmNWM2NTJlZDNhODc0
MzQxZjU4NDVhZGQ2MjBmOTYyODY5Li4zOTkxNjFjYTBiYWQxZTk4ZDdhZGU2MmZkYTU0YjNmZmQ3
ZTU4M2FkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTAtMDEgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlZCByZXNvdXJjZSBs
b2FkIHN0YXRpc3RpY3MgYXJlIG5ldmVyIG1lcmdlZCBpbnRvIHRoZSBTUUxpdGUgRGF0YWJhc2Ug
YmFja2VuZCAoMjAyMzcyKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU4NTQ1NDI+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbGF5b3V0
IHRlc3RzIHRvIHRlc3Qgc3VjY2VzZnVsIG1lcmdpbmcgb2YgcmVzb3VyY2UgbG9hZAorICAgICAg
ICBzdGF0aXN0aWNzIGludG8gU1FMaXRlIGJhY2tlbmQuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90LW92ZXJ3cml0
ZS1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRh
dGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
bWVyZ2Utc3RhdGlzdGljLWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMt
ZG9lcy1wYXJ0aWFsbHktb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3Rp
Yy1kb2VzLXBhcnRpYWxseS1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbDogQWRkZWQuCisKIDIwMTkt
MDktMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQYWdlcyB3
aXRoIFdlYiBXb3JrZXJzIGNhbm5vdCBlbnRlciB0aGUgYmFjayAvIGZvcndhcmQgY2FjaGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9t
ZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0
aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYjQwMWY5YTVlOWRjY2YyM2EzNzcwMDNkNjI3YWE1Zjg4NGZkMzg2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdl
LXN0YXRpc3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTMgQEAKK1Rlc3RzIHRoYXQgbWVyZ2VkIHN0YXRpc3RpYyBkb2VzIG5vdCBvdmVyd3Jp
dGUgb2xkIHN0YXRpc3RpYworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBI
b3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuCitQQVNT
IEhvc3QgZGlkIG5vdCBvdmVyd3JpdGUgb2xkIHZlcnkgcHJldmFsZW50IHJlc291cmNlIHZhbHVl
LgorUEFTUyBIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCBoYWQgdXNlciBpbnRlcmFjdGlvbiB2
YWx1ZQorUEFTUyBIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCBncmFuZGZhdGhlcmVkIHZhbHVl
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9t
ZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRv
ZXMtbm90LW92ZXJ3cml0ZS1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNDllZWMzOWUzZjEx
YjVlNDU3ZGJkOGJiOTJlYzdkYmM1ZDhlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMt
bm90LW92ZXJ3cml0ZS1kYXRhYmFzZS5odG1sCkBAIC0wLDAgKzEsNzkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgi
PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0PmRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IG1lcmdlZCBzdGF0aXN0aWMgZG9lcyBub3Qg
b3ZlcndyaXRlIG9sZCBzdGF0aXN0aWMiKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0ic2V0VGltZW91dCgnc2V0VXBBbmRSdW4oKScsIDApIj4KKzxzY3JpcHQ+CisgICAganNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
IjsKKyAgICBjb25zdCBzYW1wbGVUb3BGcmFtZVVSTCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAi
OworICAgIGNvbnN0IG9sZGVyVGltZXN0YW1wID0gTWF0aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0
VGltZSgpIC8gMTAwMCk7CisgICAgY29uc3QgbmV3ZXJUaW1lc3RhbXAgPSBvbGRlclRpbWVzdGFt
cCArIDEwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmdW5j
dGlvbiBpbnNlcnRTZWNvbmRTdGF0aXN0aWMoKSB7CisgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NNZXJnZVN0YXRpc3RpYyh1cmwsICIiLCBvbGRlclRpbWVzdGFtcCwgZmFsc2UsIDk5LCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBpZiAodGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2Ug
dmFsdWUuIik7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0
IGRpZCBvdmVyd3JpdGUgb2xkIHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4iKQorICAgICAgICAg
IAorICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZSh1cmwpKQorICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJIb3N0IGRpZCBub3Qgb3Zlcndy
aXRlIG9sZCB2ZXJ5IHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4iKTsKKyAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG92ZXJ3cml0ZSBvbGQgdmVyeSBw
cmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NI
YXNIYWRVc2VySW50ZXJhY3Rpb24odXJsKSkKKyAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9z
dCBkaWQgbm90IG92ZXJ3cml0ZSBvbGQgaGFkIHVzZXIgaW50ZXJhY3Rpb24gdmFsdWUiKTsKKyAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG92ZXJ3cml0
ZSBvbGQgaGFkIHVzZXIgaW50ZXJhY3Rpb24gdmFsdWUiKTsKKworICAgICAgICAgIGlmICh0ZXN0
UnVubmVyLmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQodXJsKSkKKyAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiSG9zdCBkaWQgbm90IG92ZXJ3cml0ZSBvbGQgZ3JhbmRmYXRoZXJlZCB2YWx1ZS4i
KTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG92
ZXJ3cml0ZSBvbGQgZ3JhbmRmYXRoZXJlZCB2YWx1ZS4iKTsKKworICAgICAgICAgIHRlc3RSdW5u
ZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfQor
ICAgIAorICAgIGZ1bmN0aW9uIHJ1blRlc3RSdW5uZXJUZXN0KCkgeworICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyh1cmwsICIiLCBuZXdlclRpbWVzdGFtcCwg
dHJ1ZSwgMTAwLCB0cnVlLCB0cnVlLCB0cnVlLCAxLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UuIik7CisKKyAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NWZXJ5UHJl
dmFsZW50UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdv
dCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworCisgICAgICAgICAgICBpZiAoIXRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHVybCkpCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiSG9zdCBnb3QgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIp
OworICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c0dyYW5kZmF0aGVyZWQodXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdv
dCBzZXQgYXMgZ3JhbmRmYXRoZXJlZC4iKTsKKworICAgICAgICAgICAgaW5zZXJ0U2Vjb25kU3Rh
dGlzdGljKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFVwQW5kUnVu
KCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBydW5UZXN0UnVubmVyVGVz
dCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJubyB0ZXN0UnVubmVyIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0
YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWRjZjdlODBkNzk5MGY4MDQ0NzAxNGI3ZDVlMmJhMDI0MjkzMmUx
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgbWVyZ2VkIHN0YXRpc3RpYyBvdmVy
d3JpdGVzIG9sZCBzdGF0aXN0aWMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgSG9zdCBvdmVyd3JvdGUgb2xkIHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4KK1BBU1MgSG9z
dCBvdmVyd3JvdGUgb2xkIHZlcnkgcHJldmFsZW50IHJlc291cmNlIHZhbHVlLgorUEFTUyBIb3N0
IG92ZXJ3cm90ZSBvbGQgdXNlciBpbnRlcmFjdGlvbiB2YWx1ZS4KK1BBU1MgSG9zdCBvdmVyd3Jv
dGUgb2xkIGdyYW5kZmF0aGVyZWQgdmFsdWUuCitQQVNTIEhvc3Qgc2V0IGFzIHN1YmZyYW1lIHVu
ZGVyIHRvcCBmcmFtZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3Rh
dGlzdGljLWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQxMmUxNWNj
ODBmNGU3YTgzZjQxNTc4MDBkN2MzNGIwODlmNDg2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMt
ZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDkwIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04
Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD5kZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBtZXJnZWQgc3RhdGlzdGljIG92ZXJ3cml0
ZXMgb2xkIHN0YXRpc3RpYyIpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRU
aW1lb3V0KCdzZXRVcEFuZFJ1bigpJywgMCkiPgorPHNjcmlwdD4KKyAgICBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgIGNvbnN0IHVybCA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAg
IGNvbnN0IHNhbXBsZVRvcEZyYW1lVVJMID0gImh0dHA6Ly90b3BGcmFtZURvbWFpbjo4MDAwIjsK
KyAgICBjb25zdCBvbGRlclRpbWVzdGFtcCA9IE1hdGgucm91bmQoKG5ldyBEYXRlKCkpLmdldFRp
bWUoKSAvIDEwMDApOworICAgIGNvbnN0IG5ld2VyVGltZXN0YW1wID0gb2xkZXJUaW1lc3RhbXAg
KyAxMDsKKyAgICBjb25zdCBtb3N0UmVjZW50VUlUb1RyaWdnZXJGaXJzdFBhcnR5SW50ZXJhY3Rp
b25Db3VudCA9IG5ld2VyVGltZXN0YW1wICsgOTAwMDA7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgIGZ1bmN0aW9uIGluc2VydFNlY29uZFN0YXRpc3RpYygpIHsK
KyAgICAKKyAgICAgICAgLy8gc2V0IHRoaXMgcmVzb3VyY2UgYXMgcHJldmFsZW50IHNvIGl0IGlz
IGluIHRoZSBzdGF0aXN0aWNzIHN0b3JlCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKHNhbXBsZVRvcEZyYW1lVVJMLCB0cnVlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgCisgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3Rh
dGlzdGljKHVybCwgc2FtcGxlVG9wRnJhbWVVUkwsIG5ld2VyVGltZXN0YW1wLCB0cnVlLCBtb3N0
UmVjZW50VUlUb1RyaWdnZXJGaXJzdFBhcnR5SW50ZXJhY3Rpb25Db3VudCwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgMSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoIkhvc3Qgb3Zlcndyb3RlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUu
Iik7CisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCBub3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICAg
ICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNl
KHVybCkpCisgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBvdmVyd3JvdGUg
b2xkIHZlcnkgcHJldmFsZW50IHJlc291cmNlIHZhbHVlLiIpOworICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IHNldCBhcyB2
ZXJ5IHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5l
ci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odXJsKSkKKyAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJIb3N0IG92ZXJ3cm90ZSBvbGQgdXNlciBpbnRlcmFjdGlvbiB2
YWx1ZS4iKTsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJIb3N0IG5vdCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKHVybCkpCisgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiSG9zdCBvdmVyd3JvdGUgb2xkIGdyYW5kZmF0aGVyZWQgdmFsdWUuIik7CisgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBub3Qg
c2V0IGFzIGdyYW5kZmF0aGVyZWQuIik7CisKKyAgICAgICAgICAgICAgICAgIGlmICh0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIodXJsLCBzYW1wbGVUb3BG
cmFtZVVSTCkpCisgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBzZXQgYXMg
c3ViZnJhbWUgdW5kZXIgdG9wIGZyYW1lLiIpOworICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IHNldCBhcyBzdWJmcmFtZSB1
bmRlciB0b3AgZnJhbWUuIik7CisKKyAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlz
dGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gcnVuVGVzdFJ1
bm5lclRlc3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlz
dGljKHVybCwgIiIsIG9sZGVyVGltZXN0YW1wLCBmYWxzZSwgMCwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgMCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhv
c3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgIGlmICh0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2Uu
Iik7CisKKyAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJ
bnRlcmFjdGlvbih1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IGxv
Z2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQodXJsKSkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdvdCBzZXQgYXMgZ3JhbmRmYXRoZXJlZC4iKTsKKwor
ICAgICAgICAgICAgaW5zZXJ0U2Vjb25kU3RhdGlzdGljKCk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHNldFVwQW5kUnVuKCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7
CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBydW5UZXN0UnVubmVyVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJubyB0ZXN0UnVubmVyIik7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1z
dGF0aXN0aWMtZG9lcy1wYXJ0aWFsbHktb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0
aXN0aWMtZG9lcy1wYXJ0aWFsbHktb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNzFlNDZiNzljOTE1NWVhODcxMTkwYTE2MzAzMThlOWRiZWRiNzAwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L21lcmdlLXN0YXRpc3RpYy1kb2VzLXBhcnRpYWxseS1vdmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgbWVyZ2VkIHN0YXRpc3RpYyBvdmVy
d3JpdGVzIG9sZCBzdGF0aXN0aWMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgSG9zdCBvdmVyd3JvdGUgb2xkIHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4KK1BBU1MgSG9z
dCBvdmVyd3JvdGUgb2xkIHZlcnkgcHJldmFsZW50IHJlc291cmNlIHZhbHVlLgorUEFTUyBIb3N0
IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCB1c2VyIGludGVyYWN0aW9uIHZhbHVlLgorUEFTUyBIb3N0
IG92ZXJ3cm90ZSBvbGQgZ3JhbmRmYXRoZXJlZCB2YWx1ZS4KK1BBU1MgSG9zdCBzZXQgYXMgc3Vi
ZnJhbWUgdW5kZXIgdG9wIGZyYW1lLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1wYXJ0aWFsbHktb3Zlcndy
aXRlLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtcGFydGlhbGx5LW92ZXJ3cml0ZS1kYXRhYmFz
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZDE2ZDYwYjhiMDkyNGUyNWY0MTM5YzBmODg4MmI0MDMwMmQw
NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtcGFydGlhbGx5LW92ZXJ3cml0ZS1kYXRh
YmFzZS5odG1sCkBAIC0wLDAgKzEsOTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0i
ZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3Jj
PSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PmRlc2NyaXB0aW9u
KCJUZXN0cyB0aGF0IG1lcmdlZCBzdGF0aXN0aWMgb3ZlcndyaXRlcyBvbGQgc3RhdGlzdGljIik7
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3NldFVwQW5kUnVu
KCknLCAwKSI+Cis8c2NyaXB0PgorICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29u
c3QgdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3Qgc2FtcGxlVG9wRnJh
bWVVUkwgPSAiaHR0cDovL3RvcEZyYW1lRG9tYWluOjgwMDAiOworICAgIGNvbnN0IG9sZGVyVGlt
ZXN0YW1wID0gTWF0aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMCk7CisgICAg
Y29uc3QgbmV3ZXJUaW1lc3RhbXAgPSBvbGRlclRpbWVzdGFtcCArIDEwOworICAgIGNvbnN0IG1v
c3RSZWNlbnRVSVRvVHJpZ2dlckZpcnN0UGFydHlJbnRlcmFjdGlvbkNvdW50ID0gbmV3ZXJUaW1l
c3RhbXAgKyA5MDAwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg
ICAgZnVuY3Rpb24gaW5zZXJ0U2Vjb25kU3RhdGlzdGljKCkgeworICAgIAorICAgICAgICAvLyBz
ZXQgdGhpcyByZXNvdXJjZSBhcyBwcmV2YWxlbnQgc28gaXQgaXMgaW4gdGhlIHN0YXRpc3RpY3Mg
c3RvcmUKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
c2FtcGxlVG9wRnJhbWVVUkwsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAKKyAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWModXJsLCBzYW1wbGVU
b3BGcmFtZVVSTCwgbmV3ZXJUaW1lc3RhbXAsIGZhbHNlLCBtb3N0UmVjZW50VUlUb1RyaWdnZXJG
aXJzdFBhcnR5SW50ZXJhY3Rpb25Db3VudCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgMSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3Qg
b3Zlcndyb3RlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuIik7CisgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBub3Qgc2V0
IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgICAgICAgaWYgKHRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKHVybCkpCisgICAgICAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBvdmVyd3JvdGUgb2xkIHZlcnkgcHJldmFsZW50
IHJlc291cmNlIHZhbHVlLiIpOworICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IHNldCBhcyB2ZXJ5IHByZXZhbGVudCByZXNv
dXJjZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFz
SGFkVXNlckludGVyYWN0aW9uKHVybCkpCisgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiSG9zdCBkaWQgbm90IG92ZXJ3cml0ZSBvbGQgdXNlciBpbnRlcmFjdGlvbiB2YWx1ZS4iKTsK
KyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJIb3N0IG5vdCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisKKyAgICAgICAgICAg
ICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQodXJsKSkKKyAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJIb3N0IG92ZXJ3cm90ZSBvbGQgZ3JhbmRm
YXRoZXJlZCB2YWx1ZS4iKTsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IG5vdCBzZXQgYXMgZ3JhbmRmYXRoZXJlZC4iKTsKKwor
ICAgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFz
U3ViRnJhbWVVbmRlcih1cmwsIHNhbXBsZVRvcEZyYW1lVVJMKSkKKyAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJIb3N0IHNldCBhcyBzdWJmcmFtZSB1bmRlciB0b3AgZnJhbWUuIik7
CisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSG9zdCBub3Qgc2V0IGFzIHN1YmZyYW1lIHVuZGVyIHRvcCBmcmFtZS4iKTsKKworICAgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgIH0pOworICAgIH0K
KyAgICAKKyAgICBmdW5jdGlvbiBydW5UZXN0UnVubmVyVGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWModXJsLCAiIiwgb2xkZXJUaW1lc3RhbXAs
IGZhbHNlLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHVybCkpCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNv
dXJjZS4iKTsKKworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKHVybCkpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBn
b3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgaWYgKHRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHVybCkpCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiSG9zdCBnb3QgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIp
OworICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
R3JhbmRmYXRoZXJlZCh1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290
IHNldCBhcyBncmFuZGZhdGhlcmVkLiIpOworCisgICAgICAgICAgICBpbnNlcnRTZWNvbmRTdGF0
aXN0aWMoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0VXBBbmRSdW4o
KSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1
cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJ1blRlc3RSdW5uZXJUZXN0
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoIm5vIHRlc3RSdW5uZXIiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGlj
c1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380034</attachid>
            <date>2019-10-02 10:46:36 -0700</date>
            <delta_ts>2019-10-02 11:27:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202372-20191002104636.patch</filename>
            <type>text/plain</type>
            <size>112998</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRhZmYyNDlhNzIzYmYxNDJi
MzliNmQ1ODBkOTExODllZTQ2YWE5M2EuLjJkZWVmZmVmOTFlNmExMjM2YWJhMjdhNjE4NWM1MzU5
N2IxYmVlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDE5LTEwLTAyICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFyZSBuZXZlciBtZXJnZWQgaW50byB0aGUgU1FMaXRlIERh
dGFiYXNlIGJhY2tlbmQgKDIwMjM3MikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDIzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1ODU0NTQy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uIAorCisgICAgICAgIFRoaXMg
cGF0Y2ggaGFzIGEgbG90IG9mIGNoYW5nZXMgdG8gdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
YmUgYWJsZSAKKyAgICAgICAgdG8gdGVzdCB0aGUgbWVyZ2VTdGF0aXN0aWNzIGZ1bmN0aW9uLiBN
ZXJnaW5nIGZ1bmN0aW9uYWxpdHkgbWltaWNzCisgICAgICAgIHRoYXQgb2YgdGhlIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSBhbmQgdGhlIG1lcmdlKCkgZnVuY3Rpb24gaW4KKyAg
ICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToKKyAgICAgICAgQWRkZWQgbmV3IFNR
TGl0ZSBxdWVyaWVzIHRoYXQgYXJlIG5lZWRlZCB0byBtZXJnZSBuZXcgc3RhdGlzdGljcy4KKwor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJl
cGFyZVN0YXRlbWVudHMpOgorICAgICAgICBBZGRlZCBuZXcgcHJlcGFyZSBzdGF0ZW1lbnRzIGZv
ciBuZXcgU1FMaXRlIHF1ZXJpZXMuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKToKKyAgICAgICAgVXBk
YXRlZCB0byB1c2UgZG9tYWluSUQoKSBpbnN0ZWFkIG9mIGNvbmZpcm1Eb21haW5Eb2VzTm90RXhp
c3Qgd2hpY2ggCisgICAgICAgIHdhcyBkZWxldGVkLiBDaGFuZ2VkIHRoZSBpbnNlcnQgYmluZCBw
YXJhbWV0ZXJzCisgICAgICAgIHRvIHV0aWxpemUgbmV3IGVudW0gb2YgT2JzZXJ2ZWQgRG9tYWlu
IHRhYmxlIGluZGljZXMgd2hpY2ggd2lsbCBoZWxwCisgICAgICAgIHJlZHVjZSBlcnJvcnMgaW4g
dGhlIGZ1dHVyZSBpZiB0aGUgZGF0YWJhc2Ugc2NoZW1hIGNoYW5nZXMuCisKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4
aXN0cyBjb25zdCk6CisgICAgICAgIENoYW5nZWQge3B1YmxpY30gdG8ge3ByaXZhdGV9IGluIGxv
Z2dpbmcgc3RhdGVtZW50IHRvIGF2b2lkIGxlYWtpbmcKKyAgICAgICAgc2Vuc2l0aXZlIGluZm9y
bWF0aW9uIHdoZW4gbG9nZ2luZyB0aGUgcXVlcnkgZXJyb3IuCisKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvbmZpcm1Eb21haW5Eb2VzTm90
RXhpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGVzc2VudGlhbGx5
IGRvZXMgdGhlIGV4YWN0IHNhbWUgdGhpbmcgYXMgZG9tYWluSUQgYW5kCisgICAgICAgIHdlIGNh
biByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiBieSBkZWxldGluZyBpdCBhbmQgdHJhbnNpdGlvbmlu
ZyBhbGwKKyAgICAgICAgb3RoZXIgZnVuY3Rpb25zIHRvIHVzZSBkb21haW5JRCBpbnN0ZWFkLgor
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpk
b21haW5JRCBjb25zdCk6CisgICAgICAgIENoYW5nZWQge3B1YmxpY30gdG8ge3ByaXZhdGV9IGlu
IGxvZ2dpbmcgc3RhdGVtZW50IHRvIGF2b2lkIGxlYWtpbmcKKyAgICAgICAgc2Vuc2l0aXZlIGlu
Zm9ybWF0aW9uIHdoZW4gbG9nZ2luZyB0aGUgcXVlcnkgZXJyb3IuCisgICAgICAgIAorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9t
YWluUmVsYXRpb25zaGlwcyk6CisgICAgICAgIEluIG9yZGVyIHRvIHJldXNlIHRoaXMgY29kZSBm
b3IgdGhlIG1lcmdlIHN0YXRpc3RpY3MgZnVuY3Rpb24sIEkgYWRkZWQKKyAgICAgICAgYSBjaGVj
ayBiZWZvcmUgZWFjaCBpbnNlcnQgY2FsbCB0byBlbnN1cmUgdGhlIHJlbGF0aW9uc2hpcCBkb2Vz
IG5vdAorICAgICAgICBhbHJlYWR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS4gVGhpcyB3YXMgbm90
IG5lZWRlZCBiZWZvcmUgYmVjYXVzZSBpdAorICAgICAgICB3YXMgb25seSBjYWxsZWQgb24gYW4g
ZW1wdHkgZGF0YWJhc2UuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1lcmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyk6Cisg
ICAgICAgIE1lcmdlcyBuZXcgc3RhdGlzdGljLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50
Rm9yRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0
ZWRUb1RoaXNEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFu
ZGZhdGhlckRhdGFGb3JEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzZXRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVkaWNh
dGVWYWx1ZUZvckRvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAg
Q2hhbmdlZCB7cHVibGljfSB0byB7cHJpdmF0ZX0gaW4gbG9nZ2luZyBzdGF0ZW1lbnQgdG8gYXZv
aWQgbGVha2luZworICAgICAgICBzZW5zaXRpdmUgaW5mb3JtYXRpb24gd2hlbiBsb2dnaW5nIHRo
ZSBxdWVyeSBlcnJvci4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZCk6CisgICAgICAgIEZpeCBhIGJ1ZyB1bmNv
dmVyZWQgYnkgdGhlIG5ldyB0ZXN0IGNhc2VzLgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVUcmVh
dG1lbnRGb3JPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJFeHBpcmVkVXNlckludGVyYWN0aW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckdy
YW5kZmF0aGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuKToKKyAg
ICAgICAgQ2hhbmdlZCB7cHVibGljfSB0byB7cHJpdmF0ZX0gaW4gbG9nZ2luZyBzdGF0ZW1lbnQg
dG8gYXZvaWQgbGVha2luZworICAgICAgICBzZW5zaXRpdmUgaW5mb3JtYXRpb24gd2hlbiBsb2dn
aW5nIHRoZSBxdWVyeSBlcnJvci4KKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQpOgor
ICAgICAgICBBIG5ldyBmdW5jdGlvbiB0aGF0IHV0aWxpemVzIGEgcXVlcnkgbmVlZGVkIGZvciB0
aGUgbWVyZ2luZyBvZiB0d28KKyAgICAgICAgc3RhdGlzdGljcy4KKyAgICAgICAgCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb25maXJtRG9t
YWluRG9lc05vdEV4aXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAg
ICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjptZXJnZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Ondhc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9Vc2VySW50ZXJhY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmVkIHRo
ZSBjaGVjayBmb3IgdXBkYXRpbmcgdGltZXMgYWNjZXNzZWQgZHVlIHRvIGZpcnN0IHBhcnR5IAor
ICAgICAgICBpbnRlcmFjdGlvbiwgd2hpY2ggaXMgZGF0YSBubyBsb25nZXIgbmVlZGVkIGluIHVw
ZGF0ZWQgSVRQLiAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgQWRkZWQg
dGhlIG1lcmdlU3RhdGlzdGljcyBmdW5jdGlvbiAocHJldmlvdXNseSBvbmx5IGluIHRoZSBtZW1v
cnkKKyAgICAgICAgc3RvcmUpIHRvIHRoZSBwYXJlbnQgY2xhc3Mgbm93IHRoYXQgaXQgaXMgdXNl
ZCBieSBib3RoIHN0b3Jlcy4KKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBub3cgY2FsbHMgbWVyZ2VTdGF0aXN0
aWNzIG9uIHRoZSBkYXRhYmFzZSBzdG9yZSBpZgorICAgICAgICBlbmFibGVkLgorCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNG
b3JUZXN0aW5nKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBidWlsZHMgYSB2ZWN0b3IgZnJvbSB0
aGUgc2FtcGxlIGRhdGEgdG8gdGVzdCB0aGUKKyAgICAgICAgbWVyZ2VTdGF0aXN0aWNzKCkgZnVu
Y3Rpb24gb2YgdGhlIGRhdGFiYXNlIHN0b3JlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzTWVyZ2VTdGF0aXN0aWMpOgorICAgICAgICBGaXhlZCBidWcgd2hlcmUgaXNHcmFuZGZhdGhl
cmVkIGZ1bmN0aW9uIGluIFdLV2Vic2l0ZURhdGFTdG9yZVJlZgorICAgICAgICB3YXMgY2FsbGlu
ZyBoYXNIYWRVc2VySW50ZXJhY3Rpb24gYnkgbWlzdGFrZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIFRoaXMgY29kZSBpcyBm
b3IgdGVzdGluZyB0aGUgbWVyZ2VTdGF0aXN0aWNzKCkgZnVuY3Rpb24uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmlzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgQWRkZWQg
dGhpcyBmdW5jdGlvbiB3aGljaCBjb250YWN0cyB0aGUgbmV0d29ya1Byb2Nlc3MgdG8gcmV0cmll
dmUgdGhlCisgICAgICAgIGdyYW5kZmF0aGVyZWQgdmFsdWUgZm9yIGEgZG9tYWluLiBUaGlzIHdh
cyBub3QgaW5jbHVkZWQgYmVmb3JlIGJlY2F1c2UKKyAgICAgICAgb2YgYSBidWcgaW4gV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLgorCiAyMDE5LTEwLTAyICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3Igbm9uLU1hYyBw
b3J0cyBhZnRlciByMjUwNjAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMmMzMDRlNzk0ZjIzNzEzM2ZiNWIyYzk3YWQ4
OGVkN2EwM2FhN2FmNy4uMjZlY2EzZDZlZmYxMzViYTFiNDc3OTJmM2EwNjYzYjIyOGNhZTQwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwCkBAIC03MCw2ICs3MCw4IEBAIGNvbnN0ZXhwciBhdXRvIGluc2VydFRvcExldmVsRG9t
YWluUXVlcnkgPSAiSU5TRVJUIElOVE8gVG9wTGV2ZWxEb21haW5zIFZBTFVFUyAoCiBjb25zdGV4
cHIgYXV0byBkb21haW5JREZyb21TdHJpbmdRdWVyeSA9ICJTRUxFQ1QgZG9tYWluSUQgRlJPTSBP
YnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwogY29uc3RleHBy
IGF1dG8gc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zUXVlcnkgPSAiSU5TRVJUIElO
VE8gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIChkb21haW5JRCwgdG9wTGV2ZWxE
b21haW5JRCkgIgogICAgICJTRUxFQ1QgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMg
V0hFUkUgcmVnaXN0cmFibGVEb21haW4gPT0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIHN0b3JhZ2VB
Y2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNF
TEVDVCAxIEZST00gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFp
bklEID0gPyAiCisiQU5EIHRvcExldmVsRG9tYWluSUQgPSAoU0VMRUNUIGRvbWFpbklEIEZST00g
T2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPykpIl9zOwogY29uc3Rl
eHByIGF1dG8gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1F1ZXJ5ID0gIklOU0VSVCBJTlRPIFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gKHNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEKSBTRUxF
Q1QgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21h
aW4gPT0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9FeGlz
dHNRdWVyeSA9ICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG8gV0hFUkUgc291cmNlRG9tYWluSUQgPSA/ICIKICAgICAiQU5EIHRvRG9tYWluSUQg
PSAoU0VMRUNUIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxl
RG9tYWluID0gPykpIl9zOwpAQCAtMTAwLDYgKzEwMiw3IEBAIGNvbnN0ZXhwciBhdXRvIHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUV4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNF
TEVDCiBjb25zdGV4cHIgYXV0byBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uUXVlcnkgPSAiVVBE
QVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaGFkVXNlckludGVyYWN0aW9uID0gPywgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUgPSA/ICIKICAgICAiV0hFUkUgcmVnaXN0cmFibGVEb21haW4g
PSA/Il9zOwogY29uc3RleHByIGF1dG8gdXBkYXRlTGFzdFNlZW5RdWVyeSA9ICJVUERBVEUgT2Jz
ZXJ2ZWREb21haW5zIFNFVCBsYXN0U2VlbiA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/
Il9zOworY29uc3RleHByIGF1dG8gdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkUXVlcnkgPSAiVVBE
QVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZGF0YVJlY29yZHNSZW1vdmVkID0gPyBXSEVSRSByZWdp
c3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byB1cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gPyBX
SEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byBpc1ByZXZhbGVu
dFJlc291cmNlUXVlcnkgPSAiU0VMRUNUIGlzUHJldmFsZW50IEZST00gT2JzZXJ2ZWREb21haW5z
IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHVwZGF0ZVZl
cnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlz
VmVyeVByZXZhbGVudCA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwpAQCAtMTE1
LDcgKzExOCwyMSBAQCBjb25zdGV4cHIgYXV0byBjcmVhdGVPYnNlcnZlZERvbWFpbiA9ICJDUkVB
VEUgVEFCTEUgT2JzZXJ2ZWREb21haW5zICgiCiAgICAgImhhZFVzZXJJbnRlcmFjdGlvbiBJTlRF
R0VSIE5PVCBOVUxMLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSBSRUFMIE5PVCBOVUxM
LCBncmFuZGZhdGhlcmVkIElOVEVHRVIgTk9UIE5VTEwsICIKICAgICAiaXNQcmV2YWxlbnQgSU5U
RUdFUiBOT1QgTlVMTCwgaXNWZXJ5UHJldmFsZW50IElOVEVHRVIgTk9UIE5VTEwsIGRhdGFSZWNv
cmRzUmVtb3ZlZCBJTlRFR0VSIE5PVCBOVUxMLCIKICAgICAidGltZXNBY2Nlc3NlZEFzRmlyc3RQ
YXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIElOVEVHRVIgTk9UIE5VTEwsIHRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgSU5URUdFUiBOT1QgTlVMTCk7Il9zOwot
ICAgIAorCitlbnVtIHsKKyAgICBEb21haW5JREluZGV4LAorICAgIFJlZ2lzdHJhYmxlRG9tYWlu
SW5kZXgsCisgICAgTGFzdFNlZW5JbmRleCwKKyAgICBIYWRVc2VySW50ZXJhY3Rpb25JbmRleCwK
KyAgICBNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4LAorICAgIEdyYW5kZmF0aGVy
ZWRJbmRleCwKKyAgICBJc1ByZXZhbGVudEluZGV4LAorICAgIElzVmVyeVByZXZhbGVudEluZGV4
LAorICAgIERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4LAorICAgIFRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbkluZGV4LAorICAgIFRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUElJbmRleAorfTsKKwogY29uc3RleHByIGF1dG8gY3Jl
YXRlVG9wTGV2ZWxEb21haW5zID0gIkNSRUFURSBUQUJMRSBUb3BMZXZlbERvbWFpbnMgKCIKICAg
ICAidG9wTGV2ZWxEb21haW5JRCBJTlRFR0VSIFBSSU1BUlkgS0VZLCBDT05TVFJBSU5UIGZrRG9t
YWluSUQgRk9SRUlHTiBLRVkodG9wTGV2ZWxEb21haW5JRCkgIgogICAgICJSRUZFUkVOQ0VTIE9i
c2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpOyJfczsKQEAgLTE2OCw2
ICsxODUsNyBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzbwogICAgICwgbV9pbnNlcnRUb3BMZXZl
bERvbWFpblN0YXRlbWVudChtX2RhdGFiYXNlLCBpbnNlcnRUb3BMZXZlbERvbWFpblF1ZXJ5KQog
ICAgICwgbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZG9tYWluSURG
cm9tU3RyaW5nUXVlcnkpCiAgICAgLCBtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlu
c1N0YXRlbWVudChtX2RhdGFiYXNlLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNR
dWVyeSkKKyAgICAsIG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zRXhpc3RzU3Rh
dGVtZW50KG1fZGF0YWJhc2UsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0
c1F1ZXJ5KQogICAgICwgbV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKG1fZGF0YWJhc2UsIHRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9RdWVyeSkKICAgICAsIG1fdG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUb0V4aXN0cyhtX2RhdGFiYXNlLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3Rz
UXVlcnkpCiAgICAgLCBtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbShtX2RhdGFiYXNlLCB0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21RdWVyeSkKQEAgLTE4NCw2ICsyMDIsNyBAQCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUoV2ViUmVzbwogICAgICwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b21FeGlzdHMobV9kYXRhYmFzZSwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tRXhpc3Rz
UXVlcnkpCiAgICAgLCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9kYXRh
YmFzZSwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblF1ZXJ5KQogICAgICwgbV91cGRhdGVMYXN0
U2VlblN0YXRlbWVudChtX2RhdGFiYXNlLCB1cGRhdGVMYXN0U2VlblF1ZXJ5KQorICAgICwgbV91
cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdXBkYXRlRGF0YVJl
Y29yZHNSZW1vdmVkUXVlcnkpCiAgICAgLCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50KG1fZGF0YWJhc2UsIHVwZGF0ZVByZXZhbGVudFJlc291cmNlUXVlcnkpCiAgICAgLCBtX2lz
UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQobV9kYXRhYmFzZSwgaXNQcmV2YWxlbnRSZXNvdXJj
ZVF1ZXJ5KQogICAgICwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQobV9k
YXRhYmFzZSwgdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlUXVlcnkpCkBAIC0yMTUsNyArMjM0
LDcgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc28KICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2Rh
dGFiYXNlLnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpKQotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtw
dWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtIGZhaWxlZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKIAogICAg
IGlmICghcHJlcGFyZVN0YXRlbWVudHMoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFy
ZVN0YXRlbWVudHMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zLCBkYXRhYmFzZSBw
YXRoOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSwgbV9zdG9y
YWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKQEAgLTMwOSw2ICszMjgsNyBAQCBib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50cygp
CiAgICAgICAgIHx8IG1faW5zZXJ0VG9wTGV2ZWxEb21haW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTElURV9PSwogICAgICAgICB8fCBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJh
bWVEb21haW5zU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9z
dG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNFeGlzdHNTdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8ucHJl
cGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG9FeGlzdHMucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzRnJvbS5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCkBAIC0zMjIsNiArMzQyLDcg
QEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFyZVN0YXRl
bWVudHMoKQogICAgICAgICB8fCBtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNGcm9tRXhpc3RzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV91cGRhdGVM
YXN0U2VlblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdXBk
YXRlRGF0YVJlY29yZHNSZW1vdmVkU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1faXNQcmV2YWxlbnRSZXNvdXJj
ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCkBAIC0zNDYsMjcgKzM2NywyOSBAQCBi
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERv
bWFpbihjb25zdCBSZXNvdXJjZUxvYQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0jaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChjb25maXJtRG9tYWluRG9lc05vdEV4aXN0
KGxvYWRTdGF0aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWluKSk7Ci0jZW5kaWYKKyAgICBpZiAoZG9t
YWluSUQobG9hZFN0YXRpc3RpY3MucmVnaXN0cmFibGVEb21haW4pKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4gY2FuIG9ubHkgYmUgY2FsbGVk
IG9uIGRvbWFpbnMgbm90IGluIHRoZSBkYXRhYmFzZS4iKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBpZiAobV9pbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kVGV4dCgxLCBsb2FkU3RhdGlzdGljcy5yZWdp
c3RyYWJsZURvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0
T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZERvdWJsZSgyLCBsb2FkU3RhdGlzdGljcy5sYXN0
U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoMywgbG9hZFN0YXRpc3Rp
Y3MuaGFkVXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRP
YnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kRG91YmxlKDQsIGxvYWRTdGF0aXN0aWNzLm1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0g
U1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmlu
ZEludCg1LCBsb2FkU3RhdGlzdGljcy5ncmFuZGZhdGhlcmVkKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KDYsIGxvYWRTdGF0
aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2lu
c2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoNywgbG9hZFN0YXRpc3RpY3MuaXNW
ZXJ5UHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9i
c2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoOCwgbG9hZFN0YXRpc3RpY3MuZGF0YVJlY29y
ZHNSZW1vdmVkKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFp
blN0YXRlbWVudC5iaW5kSW50KDksIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5z
ZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludCgxMCwgbG9hZFN0YXRpc3RpY3MudGlt
ZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSkgIT0gU1FMSVRFX09L
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERv
bWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgIGlmIChtX2luc2VydE9ic2VydmVkRG9tYWlu
U3RhdGVtZW50LmJpbmRUZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgsIGxvYWRTdGF0aXN0aWNz
LnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9p
bnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kRG91YmxlKExhc3RTZWVuSW5kZXgsIGxv
YWRTdGF0aXN0aWNzLmxhc3RTZWVuLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZElu
dChIYWRVc2VySW50ZXJhY3Rpb25JbmRleCwgbG9hZFN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0
aW9uKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRl
bWVudC5iaW5kRG91YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgsIGxvYWRT
dGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21h
aW5TdGF0ZW1lbnQuYmluZEludChHcmFuZGZhdGhlcmVkSW5kZXgsIGxvYWRTdGF0aXN0aWNzLmdy
YW5kZmF0aGVyZWQpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9t
YWluU3RhdGVtZW50LmJpbmRJbnQoSXNQcmV2YWxlbnRJbmRleCwgbG9hZFN0YXRpc3RpY3MuaXNQ
cmV2YWxlbnRSZXNvdXJjZSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2
ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChJc1ZlcnlQcmV2YWxlbnRJbmRleCwgbG9hZFN0YXRp
c3RpY3MuaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSworICAgICAgICB8fCBt
X2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoRGF0YVJlY29yZHNSZW1vdmVk
SW5kZXgsIGxvYWRTdGF0aXN0aWNzLmRhdGFSZWNvcmRzUmVtb3ZlZCkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChUaW1lc0Fj
Y2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb25JbmRleCwgbG9hZFN0YXRpc3Rp
Y3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50
KFRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUElJbmRleCwgbG9h
ZFN0YXRpc3RpY3MudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQ
SSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
bnNlcnRPYnNlcnZlZERvbWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2
YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAo
bV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBjb21t
aXQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluIGZhaWxl
ZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzg3LDcgKzQxMCw3IEBAIGJvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4aXN0cyhXZWJDb3JlOjpT
UUxpdGVTdGF0CiAgICAgaWYgKHN0YXRlbWVudC5iaW5kSW50KDEsICpmaXJzdERvbWFpbklEKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgfHwgc3RhdGVtZW50LmJpbmRUZXh0KDIsIHNlY29uZERvbWFp
bi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN0YXRlbWVudC5zdGVwKCkgIT0g
U1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV9pbnNl
cnREb21haW5SZWxhdGlvbnNoaXBTdGF0ZW1lbnQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3Nh
Z2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1faW5zZXJ0RG9tYWluUmVsYXRpb25zaGlw
U3RhdGVtZW50IGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQwNiw3ICs0MjksNyBAQCBi
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxh
dGlvbnNoaXAoV2ViQ29yZTo6U1FMaQogICAgIGlmIChzdGF0ZW1lbnQuYmluZEludCgxLCBkb21h
aW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN0YXRlbWVudC5iaW5kVGV4dCgyLCB0b3BG
cmFtZS5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN0YXRlbWVudC5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1f
aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwU3RhdGVtZW50IGZhaWxlZCB0byBiaW5kLCBlcnJvciBt
ZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX2luc2VydERvbWFpblJlbGF0aW9u
c2hpcFN0YXRlbWVudCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00MTcsMzAgKzQ0MCw2
IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFp
blJlbGF0aW9uc2hpcChXZWJDb3JlOjpTUUxpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZm5k
ZWYgTkRFQlVHCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb25m
aXJtRG9tYWluRG9lc05vdEV4aXN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAobV9kb21h
aW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBT
UUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvbmZpcm1E
b21haW5Eb2VzTm90RXhpc3QgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGlj
fXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgICAgIAotICAg
IGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykg
ewotICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRlbWVu
dC5yZXNldCgpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3Vs
dCA9PSBTUUxJVEVfT0spOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaW50
IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQucmVzZXQoKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwot
ICAgIAotICAgIHJldHVybiB0cnVlOwotfQotI2VuZGlmCi0KIE9wdGlvbmFsPHVuc2lnbmVkPiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKQEAgLTQ0OCw3ICs0NDcsNyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYgogICAgIHVu
c2lnbmVkIGRvbWFpbklEID0gMDsKIAogICAgIGlmIChtX2RvbWFpbklERnJvbVN0cmluZ1N0YXRl
bWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSykgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURGcm9tU3RyaW5nIGZhaWxlZCwg
ZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURGcm9tU3Ry
aW5nIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAg
ICAgCkBAIC00NzQsMjYgKzQ3Myw0MCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKGNvbnN0IFJlc291cgogICAgIGlm
ICghcmVnaXN0cmFibGVEb21haW5JRCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGZvciAo
YXV0byYgdG9wRnJhbWVEb21haW4gOiBsb2FkU3RhdGlzdGljcy5zdG9yYWdlQWNjZXNzVW5kZXJU
b3BGcmFtZURvbWFpbnMpCi0gICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N0b3Jh
Z2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudCwgcmVnaXN0cmFibGVEb21haW5J
RC52YWx1ZSgpLCB0b3BGcmFtZURvbWFpbik7CisgICAgZm9yIChhdXRvJiB0b3BGcmFtZURvbWFp
biA6IGxvYWRTdGF0aXN0aWNzLnN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucykgewor
ICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyhtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZy
YW1lRG9tYWluc0V4aXN0c1N0YXRlbWVudCwgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0
b3BGcmFtZURvbWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9z
dG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQsIHJlZ2lzdHJhYmxlRG9t
YWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pOworICAgIH0KIAotICAgIGZvciAoYXV0byYg
dG9Eb21haW4gOiBsb2FkU3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKQotICAg
ICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1Rv
LCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvRG9tYWluKTsKKyAgICBmb3IgKGF1dG8m
IHRvRG9tYWluIDogbG9hZFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbykgewor
ICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyhtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG9FeGlzdHMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9Eb21haW4pKQorICAgICAg
ICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
bywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b0RvbWFpbik7CisgICAgfQogICAgIAot
ICAgIGZvciAoYXV0byYgZnJvbURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RzRnJvbSkKLSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fdG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIGZyb21E
b21haW4pOworICAgIGZvciAoYXV0byYgZnJvbURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkgeworICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0
cyhtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbUV4aXN0cywgcmVnaXN0cmFibGVEb21haW5J
RC52YWx1ZSgpLCBmcm9tRG9tYWluKSkKKyAgICAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9u
c2hpcChtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSwgcmVnaXN0cmFibGVEb21haW5JRC52
YWx1ZSgpLCBmcm9tRG9tYWluKTsKKyAgICB9CiAgICAgCi0gICAgZm9yIChhdXRvJiB0b3BGcmFt
ZURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpCi0g
ICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1YmZyYW1lVW5kZXJUb3BGcmFtZURv
bWFpbnMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pOworICAg
IGZvciAoYXV0byYgdG9wRnJhbWVEb21haW4gOiBsb2FkU3RhdGlzdGljcy5zdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW5zKSB7CisgICAgICAgIGlmICghcmVsYXRpb25zaGlwRXhpc3RzKG1fc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVl
KCksIHRvcEZyYW1lRG9tYWluKSkKKyAgICAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hp
cChtX3N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFs
dWUoKSwgdG9wRnJhbWVEb21haW4pOworICAgIH0KICAgICAKLSAgICBmb3IgKGF1dG8mIHRvcEZy
YW1lRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
cykKLSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b3BGcmFtZURvbWFp
bik7CisgICAgZm9yIChhdXRvJiB0b3BGcmFtZURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMpIHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBF
eGlzdHMobV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMsIHJlZ2lzdHJhYmxl
RG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pKQorICAgICAgICAgICAgaW5zZXJ0RG9t
YWluUmVsYXRpb25zaGlwKG1fc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucywgcmVnaXN0
cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b3BGcmFtZURvbWFpbik7CisgICAgfQogICAgIAotICAg
IGZvciAoYXV0byYgdG9Eb21haW4gOiBsb2FkU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvKQotICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvRG9tYWlu
KTsKKyAgICBmb3IgKGF1dG8mIHRvRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUbykgeworICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyhtX3N1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFs
dWUoKSwgdG9Eb21haW4pKQorICAgICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1f
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgp
LCB0b0RvbWFpbik7CisgICAgfQogICAgIAotICAgIGZvciAoYXV0byYgZnJvbURvbWFpbiA6IGxv
YWRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkKLSAgICAgICAgaW5z
ZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLCBy
ZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIGZyb21Eb21haW4pOworICAgIGZvciAoYXV0byYg
ZnJvbURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSkgeworICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyhtX3N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzRnJvbUV4aXN0cywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCBmcm9tRG9t
YWluKSkKKyAgICAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzRnJvbSwgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCBmcm9tRG9t
YWluKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZSYgbWVtb3J5U3RvcmUpCkBAIC01MTMsNiArNTI2LDczIEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKGNv
bnN0IFJlc291cmNlCiAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoc3RhdGlzdGlj
LnZhbHVlKTsKIH0KIAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
bWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiBjdXJyZW50LCBjb25zdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiBvdGhlcikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
KworICAgIGF1dG8gY3VycmVudFJlZ2lzdHJhYmxlRG9tYWluID0gY3VycmVudC5nZXRDb2x1bW5U
ZXh0KFJlZ2lzdHJhYmxlRG9tYWluSW5kZXgpOworICAgIGF1dG8gY3VycmVudExhc3RTZWVuID0g
Y3VycmVudC5nZXRDb2x1bW5Eb3VibGUoTGFzdFNlZW5JbmRleCk7CisgICAgYXV0byBjdXJyZW50
TW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiA9IGN1cnJlbnQuZ2V0Q29sdW1uRG91YmxlKE1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgpOworICAgIGJvb2wgY3VycmVudEdyYW5kZmF0
aGVyZWQgPSBjdXJyZW50LmdldENvbHVtbkludChHcmFuZGZhdGhlcmVkSW5kZXgpOworICAgIGJv
b2wgY3VycmVudElzUHJldmFsZW50ID0gY3VycmVudC5nZXRDb2x1bW5JbnQoSXNQcmV2YWxlbnRJ
bmRleCk7CisgICAgYm9vbCBjdXJyZW50SXNWZXJ5UHJldmFsZW50ID0gY3VycmVudC5nZXRDb2x1
bW5JbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgpOworICAgIHVuc2lnbmVkIGN1cnJlbnREYXRhUmVj
b3Jkc1JlbW92ZWQgPSBjdXJyZW50LmdldENvbHVtbkludChEYXRhUmVjb3Jkc1JlbW92ZWRJbmRl
eCk7CisKKyAgICBBU1NFUlQoY3VycmVudFJlZ2lzdHJhYmxlRG9tYWluID09IG90aGVyLnJlZ2lz
dHJhYmxlRG9tYWluLnN0cmluZygpKTsKKworICAgIGlmIChXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHMoY3VycmVudExhc3RTZWVuKSA8IG90aGVyLmxhc3RTZWVuKQorICAgICAgICB1cGRhdGVMYXN0
U2VlbihvdGhlci5yZWdpc3RyYWJsZURvbWFpbiwgb3RoZXIubGFzdFNlZW4pOworCisgICAgaWYg
KCFvdGhlci5oYWRVc2VySW50ZXJhY3Rpb24pIHsKKyAgICAgICAgLy8gSWYgbW9zdCByZWNlbnQg
dXNlciBpbnRlcmFjdGlvbiB0aW1lIGhhcyBiZWVuIHJlc2V0IGRvIHNvIGhlcmUgdG9vLgorICAg
ICAgICBpZiAoIW90aGVyLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKQorICAgICAgICAg
ICAgc2V0VXNlckludGVyYWN0aW9uKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLCBmYWxzZSwgeyB9
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2V0VXNlckludGVyYWN0aW9uKG90aGVyLnJlZ2lzdHJh
YmxlRG9tYWluLCB0cnVlLCBzdGQ6Om1heChXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoY3VycmVu
dE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24pLCBvdGhlci5tb3N0UmVjZW50VXNlckludGVyYWN0
aW9uVGltZSkpOworCisgICAgaWYgKG90aGVyLmdyYW5kZmF0aGVyZWQgJiYgIWN1cnJlbnRHcmFu
ZGZhdGhlcmVkKQorICAgICAgICBzZXRHcmFuZGZhdGhlcmVkKG90aGVyLnJlZ2lzdHJhYmxlRG9t
YWluLCB0cnVlKTsKKyAgICBpZiAob3RoZXIuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAhY3VycmVu
dElzUHJldmFsZW50KQorICAgICAgICBzZXRQcmV2YWxlbnRSZXNvdXJjZShvdGhlci5yZWdpc3Ry
YWJsZURvbWFpbik7CisgICAgaWYgKG90aGVyLmlzVmVyeVByZXZhbGVudFJlc291cmNlICYmICFj
dXJyZW50SXNWZXJ5UHJldmFsZW50KQorICAgICAgICBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
b3RoZXIucmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChvdGhlci5kYXRhUmVjb3Jkc1JlbW92
ZWQgPiBjdXJyZW50RGF0YVJlY29yZHNSZW1vdmVkKQorICAgICAgICB1cGRhdGVEYXRhUmVjb3Jk
c1JlbW92ZWQob3RoZXIucmVnaXN0cmFibGVEb21haW4sIG90aGVyLmRhdGFSZWNvcmRzUmVtb3Zl
ZCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdl
U3RhdGlzdGljKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpYykKK3sKKyAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIFNRTGl0ZVN0YXRlbWVudCBmZXRj
aE9sZFN0YXRpc3RpY0RhdGEobV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZST00gT2JzZXJ2ZWREb21h
aW5zIHdoZXJlIHJlZ2lzdHJhYmxlRG9tYWluID0gPyIpOworICAgIGlmIChmZXRjaE9sZFN0YXRp
c3RpY0RhdGEucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBmZXRjaE9sZFN0YXRp
c3RpY0RhdGEuYmluZFRleHQoMSwgc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgZmV0Y2hPbGRTdGF0aXN0aWNEYXRhLnN0ZXAoKSAh
PSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJn
ZVN0YXRpc3RpYy4gU3RhdGVtZW50IGZhaWxlZCB0byBiaW5kIG9yIGRvbWFpbiB3YXMgbm90IGZv
dW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1lcmdlKGZldGNoT2xkU3RhdGlzdGljRGF0YSwgc3RhdGlzdGljKTsK
K30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0
aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCit7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBmb3IgKGF1dG8mIHN0YXRpc3Rp
YyA6IHN0YXRpc3RpY3MpIHsKKyAgICAgICAgaWYgKCFkb21haW5JRChzdGF0aXN0aWMucmVnaXN0
cmFibGVEb21haW4pKQorICAgICAgICAgICAgaW5zZXJ0T2JzZXJ2ZWREb21haW4oc3RhdGlzdGlj
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVyZ2VTdGF0aXN0aWMoc3RhdGlzdGljKTsK
KyAgICB9CisKKyAgICAvLyBNYWtlIGEgc2VwYXJhdGUgcGFzcyBmb3IgaW50ZXItZG9tYWluIHJl
bGF0aW9uc2hpcHMgc28gd2UKKyAgICAvLyBjYW4gcmVmZXIgdG8gdGhlIE9ic2VydmVkRG9tYWlu
IHRhYmxlIGVudHJpZXMuCisgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKQor
ICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKHN0YXRpc3RpYyk7Cit9CisKIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNhbGN1bGF0ZUFuZFN1Ym1pdFRl
bGVtZXRyeSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC01
NDEsNyArNjIxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMKICAgICBTUUxpdGVTdGF0ZW1l
bnQgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsIG1ha2VTdHJpbmcoIlVQREFU
RSBPYnNlcnZlZERvbWFpbnMgU0VUIGRhdGFSZWNvcmRzUmVtb3ZlZCA9IGRhdGFSZWNvcmRzUmVt
b3ZlZCArIDEgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gSU4gKCIsIGRvbWFpbnNUb1N0cmluZyhk
b21haW5zKSwgIikiKSk7CiAgICAgaWYgKGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudC5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudC5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmluY3JlbWVudFN0YXRpc3RpY3NGb3JEb21haW5zIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtw
dWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jcmVtZW50U3RhdGlzdGljc0ZvckRvbWFpbnMgZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CkBAIC01
NjEsNyArNjQxLDcgQEAgdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnMKICAgICBTUUxpdGVTdGF0ZW1l
bnQgZmluZFN1YnJlc291cmNlcyhtX2RhdGFiYXNlLCAiU0VMRUNUIFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzRnJvbS5mcm9tRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c0Zyb20gSU5ORVIgSk9JTiBPYnNlcnZlZERvbWFpbnMgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFp
bklEID0gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLmZyb21Eb21haW5JRCBXSEVSRSBz
dWJyZXNvdXJjZURvbWFpbklEID0gPyBBTkQgT2JzZXJ2ZWREb21haW5zLmlzUHJldmFsZW50ID0g
MCJfcyk7CiAgICAgaWYgKGZpbmRTdWJyZXNvdXJjZXMucHJlcGFyZSgpICE9IFNRTElURV9PSwog
ICAgICAgICB8fCBmaW5kU3VicmVzb3VyY2VzLmJpbmRJbnQoMSwgcHJpbWFyeURvbWFpbklEKSAh
PSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vy
c2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFpbiBm
YWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2
ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFpbiBmYWls
ZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CkBAIC01NzYsNyArNjU2LDcgQEAgdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnMKICAg
ICBTUUxpdGVTdGF0ZW1lbnQgZmluZFRvcEZyYW1lcyhtX2RhdGFiYXNlLCAiU0VMRUNUIFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzRnJvbS5mcm9tRG9tYWluSUQgZnJvbSBUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c0Zyb20gSU5ORVIgSk9JTiBPYnNlcnZlZERvbWFpbnMgT04gT2JzZXJ2ZWREb21haW5z
LmRvbWFpbklEID0gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tLmZyb21Eb21haW5JRCBXSEVS
RSB0YXJnZXREb21haW5JRCA9ID8gQU5EIE9ic2VydmVkRG9tYWlucy5pc1ByZXZhbGVudCA9IDAi
X3MpOwogICAgIGlmIChmaW5kVG9wRnJhbWVzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAg
ICAgfHwgZmluZFRvcEZyYW1lcy5iaW5kSW50KDEsIHByaW1hcnlEb21haW5JRCkgIT0gU1FMSVRF
X09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWN1cnNpdmVseUZp
bmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4gZmFpbGVkLCBl
cnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmRO
b25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4gZmFpbGVkLCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQpAQCAtNjI5LDcgKzcwOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsCiAgICAgU1FMaXRl
U3RhdGVtZW50IG1hcmtQcmV2YWxlbnRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygi
VVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSAxIFdIRVJFIGRvbWFpbklE
IElOICgiLCBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFN0ZFNldDx1bnNpZ25lZD46Oml0
ZXJhdG9yPihwcmV2YWxlbnREdWVUb1JlZGlyZWN0LmJlZ2luKCksIHByZXZhbGVudER1ZVRvUmVk
aXJlY3QuZW5kKCkpKSwgIikiKSk7CiAgICAgaWYgKG1hcmtQcmV2YWxlbnRTdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtYXJrUHJldmFsZW50U3RhdGVtZW50LnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQgZmFpbGVkIHRvIGV4
ZWN1dGUsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1By
ZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50IGZhaWxlZCB0byBleGVjdXRlLCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CkBAIC03NzQsMTIgKzg1
NCwxMiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmCiAKICAgICBzd2l0Y2ggKGNvb2tpZVRyZWF0
bWVudEZvck9yaWdpbihzdWJGcmFtZURvbWFpbikpIHsKICAgICBjYXNlIENvb2tpZVRyZWF0bWVu
dFJlc3VsdDo6QmxvY2tBbmRQdXJnZTogewotICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRl
YnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJDYW5ub3QgZ3JhbnQgc3RvcmFnZSBhY2Nl
c3MgdG8gJXtwdWJsaWN9cyBzaW5jZSBpdHMgY29va2llcyBhcmUgYmxvY2tlZCBpbiB0aGlyZC1w
YXJ0eSBjb250ZXh0cyBhbmQgaXQgaGFzIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uIGFz
IGZpcnN0LXBhcnR5LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVi
dWcsICJDYW5ub3QgZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwcml2YXRlfXMgc2luY2UgaXRz
IGNvb2tpZXMgYXJlIGJsb2NrZWQgaW4gdGhpcmQtcGFydHkgY29udGV4dHMgYW5kIGl0IGhhcyBu
b3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbiBhcyBmaXJzdC1wYXJ0eS4iLCBzdWJGcmFtZURv
bWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
U3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ29va2llVHJlYXRtZW50UmVzdWx0OjpCbG9ja0FuZEtl
ZXA6IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCks
IElUUERlYnVnLCAiTm8gbmVlZCB0byBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3B1YmxpY31z
IHNpbmNlIGl0cyBjb29raWVzIGFyZSBub3QgYmxvY2tlZCBpbiB0aGlyZC1wYXJ0eSBjb250ZXh0
cy4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIElUUERlYnVnLCAiTm8gbmVl
ZCB0byBncmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3ByaXZhdGV9cyBzaW5jZSBpdHMgY29va2ll
cyBhcmUgbm90IGJsb2NrZWQgaW4gdGhpcmQtcGFydHkgY29udGV4dHMuIiwgc3ViRnJhbWVEb21h
aW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0
b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2Vzcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
OwpAQCAtNzkwLDE5ICs4NzAsMTkgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJgogCiAgICAgYXV0
byB1c2VyV2FzUHJvbXB0ZWRFYXJsaWVyID0gaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhy
b3VnaFByb21wdChzdWJGcmFtZVN0YXR1cy5zZWNvbmQsIHRvcEZyYW1lRG9tYWluKTsKICAgICBp
ZiAodXNlcldhc1Byb21wdGVkRWFybGllciA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246
Ok5vKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgp
LCBJVFBEZWJ1ZywgIkFib3V0IHRvIGFzayB0aGUgdXNlciB3aGV0aGVyIHRoZXkgd2FudCB0byBn
cmFudCBzdG9yYWdlIGFjY2VzcyB0byAle3B1YmxpY31zIHVuZGVyICV7cHVibGljfXMgb3Igbm90
LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRvcEZyYW1lRG9tYWlu
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRl
YnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJBYm91dCB0byBhc2sgdGhlIHVzZXIgd2hl
dGhlciB0aGV5IHdhbnQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwcml2YXRlfXMgdW5k
ZXIgJXtwcml2YXRlfXMgb3Igbm90LiIsIHN1YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHRvcEZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpSZXF1aXJlc1VzZXJQcm9tcHQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHVzZXJXYXNQcm9tcHRlZEVhcmxp
ZXIgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpCi0gICAgICAgIFJFTEVBU0Vf
TE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBJVFBEZWJ1ZywgIlN0b3JhZ2UgYWNj
ZXNzIHdhcyBncmFudGVkIHRvICV7cHVibGljfXMgdW5kZXIgJXtwdWJsaWN9cy4iLCBzdWJGcmFt
ZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0b3BGcmFtZURvbWFpbi5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdF
bmFibGVkKCksIElUUERlYnVnLCAiU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgdG8gJXtwcml2
YXRlfXMgdW5kZXIgJXtwcml2YXRlfXMuIiwgc3ViRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgdG9wRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBT
UUxpdGVTdGF0ZW1lbnQgaW5jcmVtZW50U3RvcmFnZUFjY2VzcyhtX2RhdGFiYXNlLCAiVVBEQVRF
IE9ic2VydmVkRG9tYWlucyBTRVQgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFn
ZUFjY2Vzc0FQSSA9IHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NB
UEkgKyAxIFdIRVJFIGRvbWFpbklEID0gPyIpOwogICAgIGlmIChpbmNyZW1lbnRTdG9yYWdlQWNj
ZXNzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgaW5jcmVtZW50U3RvcmFnZUFj
Y2Vzcy5iaW5kSW50KDEsIHN1YkZyYW1lU3RhdHVzLnNlY29uZCkgIT0gU1FMSVRFX09LCiAgICAg
ICAgIHx8IGluY3JlbWVudFN0b3JhZ2VBY2Nlc3Muc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyBm
YWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04MjUsNyArOTA1LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihEb21haW4KICAgICBpZiAoY29va2llVHJlYXRtZW50Rm9yT3JpZ2luKGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcykgIT0gQ29va2llVHJlYXRtZW50UmVzdWx0OjpBbGxvdykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVk
KCksIElUUERlYnVnLCAiW1RlbXBvcmFyeSBjb21iYXRpYmlsaXR5IGZpeF0gU3RvcmFnZSBhY2Nl
c3Mgd2FzIGdyYW50ZWQgZm9yICV7cHVibGljfXMgdW5kZXIgb3BlbmVyIHBhZ2UgZnJvbSAle3B1
YmxpY31zLCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gaW4gdGhlIG9wZW5lZCB3aW5kb3cuIiwgZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG9wZW5lckRv
bWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRl
YnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJbVGVtcG9yYXJ5IGNvbWJhdGliaWxpdHkg
Zml4XSBTdG9yYWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCBmb3IgJXtwcml2YXRlfXMgdW5kZXIgb3Bl
bmVyIHBhZ2UgZnJvbSAle3ByaXZhdGV9cywgd2l0aCB1c2VyIGludGVyYWN0aW9uIGluIHRoZSBv
cGVuZWQgd2luZG93LiIsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcy5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBvcGVuZXJEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgZ3Jh
bnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCkgeyB9KTsKIH0KIApAQCAtODgyLDcgKzk2Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNl
CiAgICAgU1FMaXRlU3RhdGVtZW50IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudChtX2RhdGFiYXNl
LCBtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBncmFuZGZhdGhlcmVkID0g
MSBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBJTiAoIiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnMp
LCAiKSIpKTsKICAgICBpZiAoZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbmRm
YXRoZXJEYXRhRm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMgZmFpbGVkLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CkBAIC05MDUsNyArOTg1LDcgQEAg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6ZW5zdXJlUHJldmFsZW50UmUKICAgICAgICAgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNz
Rm9yUmVnaXN0cmFibGVEb21haW4oZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSgpKTsKICAg
ICAgICAgc2V0UHJldmFsZW50UmVzb3VyY2UoZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSgp
LCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlOjpIaWdoKTsKICAgICAgICAgcHJpbWFyeURvbWFpbnNU
b0Jsb2NrLnVuY2hlY2tlZEFwcGVuZChkZWJ1Z01hbnVhbFByZXZhbGVudFJlc291cmNlKCkpOwot
ICAgICAgICBSRUxFQVNFX0xPR19JTkZPKElUUERlYnVnLCAiRGlkIHNldCAle3B1YmxpY31zIGFz
IHByZXZhbGVudCByZXNvdXJjZSBmb3IgdGhlIHB1cnBvc2VzIG9mIElUUCBEZWJ1ZyBNb2RlLiIs
IGRlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhJVFBEZWJ1ZywgIkRpZCBzZXQgJXtwcml2YXRlfXMg
YXMgcHJldmFsZW50IHJlc291cmNlIGZvciB0aGUgcHVycG9zZXMgb2YgSVRQIERlYnVnIE1vZGUu
IiwgZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgIH0KIAogICAgIHJldHVybiBwcmltYXJ5RG9tYWluc1RvQmxvY2s7CkBAIC05ODMsNyAr
MTA2Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvCiAgICAgICAgIHx8IG1fbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kRG91YmxlKDIsIG1vc3RSZWNlbnRJbnRlcmFj
dGlvbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwogICAgICAgICB8
fCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmluZFRleHQoMywgZG9tYWlu
LnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVy
YWN0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0VXNlckludGVyYWN0aW9uLCBlcnJvciBtZXNzYWdlOiAl
e3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRVc2VySW50ZXJhY3Rpb24sIGVycm9yIG1lc3Nh
Z2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAx
MSw3ICsxMDkxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGUKICAgICBpZiAocmVtb3ZlU3Rv
cmFnZUFjY2Vzcy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHJlbW92ZVN0b3Jh
Z2VBY2Nlc3MuYmluZEludCgxLCB0YXJnZXRSZXN1bHQuc2Vjb25kKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgfHwgcmVtb3ZlU3RvcmFnZUFjY2Vzcy5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbiBmYWls
ZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bG9n
VXNlckludGVyYWN0aW9uIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CiB9CkBAIC0xMDIyLDcgKzExMDIsNyBAQCBib29sIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3Qg
UmVnaXN0cmFibAogCiAgICAgaWYgKG1faGFkVXNlckludGVyYWN0aW9uU3RhdGVtZW50LmJpbmRU
ZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1faGFkVXNl
ckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCBm
YWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1faGFkVXNl
ckludGVyYWN0aW9uU3RhdGVtZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKIAogICAgICAgICBpbnQgcmVzZXRS
ZXN1bHQgPSBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5yZXNldCgpOwogICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlc2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOwpAQCAt
MTA2MSw3ICsxMTQxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGUKICAgICBpZiAobV91cGRh
dGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwog
ICAgICAgICB8fCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmJpbmRUZXh0KDIs
IGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdXBkYXRlUHJldmFs
ZW50UmVzb3VyY2VTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91
cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7
cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTA3Myw3ICsx
MTUzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0UHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGUKICAgICAgICAgaWYgKG1fdXBkYXRlVmVy
eVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LmJpbmRJbnQoMSwgMSkgIT0gU1FMSVRFX09LCiAg
ICAgICAgICAgICB8fCBtX3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5iaW5k
VGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgbV91
cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05F
KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklE
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVWZXJ5
UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1Ymxp
Y31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwOTQsNyArMTE3NCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVu
dChTdGRTZXQ8dW5zaWduZWQ+CiAgICAgU1FMaXRlU3RhdGVtZW50IGRvbWFpbnNUb1VwZGF0ZVN0
YXRlbWVudChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNF
VCBpc1ByZXZhbGVudCA9IDEgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGJ1aWxkTGlzdChXVEY6Okl0
ZXJhdG9yUmFuZ2U8U3RkU2V0PHVuc2lnbmVkPjo6aXRlcmF0b3I+KGRvbWFpbnMuYmVnaW4oKSwg
ZG9tYWlucy5lbmQoKSkpLCAiKSIpKTsKICAgICBpZiAoZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZG9tYWluc1RvVXBkYXRlU3RhdGVt
ZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtw
dWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50IGZhaWxlZCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMTE5LDcgKzExOTksNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbihXZWJDb3JlOjpTUUxpdAogICAgICAgICBp
bnQgcmVzZXRSZXN1bHQgPSBwcmVkaWNhdGVTdGF0ZW1lbnQucmVzZXQoKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKIAotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlZGljYXRlVmFsdWVGb3JEb21haW4g
ZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnByZWRpY2F0ZVZhbHVlRm9yRG9tYWluIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAl
e3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTc4LDcgKzEyNTgsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYgogICAgIAogICAgIGlmIChtX2NsZWFyUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1l
bnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwg
bV9jbGVhclByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZSwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lv
bklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcmV2
YWxlbnRSZXNvdXJjZSwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMTk0LDkgKzEyNzQsOSBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYQogICAgIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KGRvbWFpbik7CiAgICAgCiAgICAgaWYgKG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5i
aW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgbV91cGRhdGVHcmFuZGZh
dGhlcmVkU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IG1fdXBkYXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5iaW5kVGV4dCgyLCBk
b21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3VwZGF0ZUdyYW5kZmF0
aGVyZWRTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkIGZhaWxlZCB0byBiaW5kLCBlcnJv
ciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXRHcmFuZGZhdGhlcmVkIGZh
aWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksNyArMTM2OSw3IEBAIHN0ZDo6cGFpcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6QWRkZWRSZWNvcmQsIHVuc2lnbmVkPiBSZXNv
dXJjZUxvCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAobV9kb21h
aW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBT
UUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluIGZhaWxlZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UmVnaXN0cmFibGVEb21haW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIHsgQWRkZWRSZWNvcmQ6Ok5vLCAwIH07CiAgICAgfQpAQCAt
MTMxNiw3ICsxMzk2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y2xlYXJEYXRhYmFzZUNvbnRlbnRzKCkKICAgICBtX2RhdGFiYXNlLmNsZWFyQWxsVGFibGVz
KCk7CiAKICAgICBpZiAoIWNyZWF0ZVNjaGVtYSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpj
bGVhckRhdGFiYXNlQ29udGVudHMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zLCBk
YXRhYmFzZSBwYXRoOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJp
dmF0ZX1zLCBkYXRhYmFzZSBwYXRoOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTM0
NSw3ICsxNDI1LDcgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OkNvb2tp
ZVRyZWF0bWVudFJlc3VsdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWMKICAgICBTUUxpdGVTdGF0ZW1l
bnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgaXNQcmV2YWxlbnQsIGhhZFVzZXJJbnRl
cmFjdGlvbiBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8i
KTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwg
c3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVUcmVhdG1lbnRGb3JPcmln
aW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmNvb2tpZVRyZWF0bWVudEZvck9yaWdpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIApAQCAtMTQ5Nyw3ICsxNTc3LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJFeHBpcmVk
VXNlckludGVyYWN0aW9ucygpCiAKICAgICBpZiAoY2xlYXJFeHBpcmVkSW50ZXJhY3Rpb24uc3Rl
cCgpICE9IFNRTElURV9ET05FCiAgICAgICAgIHx8IHJlbW92ZVN0b3JhZ2VBY2Nlc3Muc3RlcCgp
ICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckV4cGlyZWRVc2Vy
SW50ZXJhY3Rpb25zIHN0YXRlbWVudChzKSBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTog
JXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y2xlYXJFeHBpcmVkVXNlckludGVyYWN0aW9ucyBzdGF0ZW1lbnQocykgZmFp
bGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IH0KQEAgLTE1MTYsNyArMTU5Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmNsZWFyR3JhbmRmYXRoZXJpbmcoVmVjdG9yPHVuc2lnbmVkPiYmCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICBpZiAoY2xlYXJHcmFuZGZhdGhlcmluZ1N0YXRlbWVudC5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNsZWFyR3JhbmRmYXRoZXJpbmcgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVi
bGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3JhbmRmYXRoZXJpbmcgZmFpbGVkIHRvIGJpbmQs
IGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KQEAgLTE1OTYs
NyArMTY3Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBy
dW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKICAgICBTUUxpdGVTdGF0ZW1lbnQgcmVjb3Jkc1RvUHJ1
bmUobV9kYXRhYmFzZSwgIlNFTEVDVCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBPUkRF
UiBCWSBoYWRVc2VySW50ZXJhY3Rpb24sIGlzUHJldmFsZW50LCBsYXN0U2VlbiBMSU1JVCA/Iik7
CiAgICAgaWYgKHJlY29yZHNUb1BydW5lLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
fHwgcmVjb3Jkc1RvUHJ1bmUuYmluZEludCgxLCBjb3VudExlZnRUb1BydW5lKSAhPSBTUUxJVEVf
T0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkIGZhaWxl
ZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQgZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTE2MTAsNyArMTY5MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKICAgICBTUUxpdGVTdGF0
ZW1lbnQgcHJ1bmVDb21tYW5kKG1fZGF0YWJhc2UsIG1ha2VTdHJpbmcoIkRFTEVURSBmcm9tIE9i
c2VydmVkRG9tYWlucyBXSEVSRSBkb21haW5JRCBJTiAoIiwgbGlzdFRvUHJ1bmUsICIpIikpOwog
ICAgIGlmIChwcnVuZUNvbW1hbmQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBw
cnVuZUNvbW1hbmQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCBmYWlsZWQsIGVycm9yIG1l
c3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVk
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xNjIzLDcgKzE3MDMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
bgogICAgIGlmIChtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50LmJpbmREb3VibGUoMSwgbGFzdFNl
ZW4uc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwg
bV91cGRhdGVMYXN0U2VlblN0YXRlbWVudC5iaW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSwogICAgICAgICB8fCBtX3VwZGF0ZUxhc3RTZWVuU3RhdGVtZW50LnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBk
YXRlTGFzdFNlZW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2NjIs
NiArMTc0MiwyMiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpz
ZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cgogICAgIHNldFByZXZhbGVudFJl
c291cmNlKGRvbWFpbiwgUmVzb3VyY2VMb2FkUHJldmFsZW5jZTo6VmVyeUhpZ2gpOwogfQogCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRhUmVjb3Jk
c1JlbW92ZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgaW50IHZhbHVlKQorewor
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKG1fdXBkYXRlRGF0YVJl
Y29yZHNSZW1vdmVkU3RhdGVtZW50LmJpbmRJbnQoMSwgdmFsdWUpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5iaW5kVGV4dCgyLCBk
b21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX3VwZGF0ZURhdGFSZWNv
cmRzUmVtb3ZlZFN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZCBmYWlsZWQg
dG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpbnQgcmVzZXRSZXN1bHQgPSBtX3VwZGF0ZURhdGFSZWNvcmRz
UmVtb3ZlZFN0YXRlbWVudC5yZXNldCgpOworICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQs
IHJlc2V0UmVzdWx0ID09IFNRTElURV9PSyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmgKaW5kZXggZjFkNTY1NWRlZWJjZGIwNDdjZGQ5NmQyZTkzNTYzNGNlYWMwMWQzYS4u
ZWE3ZTY0OWZmZjVkMTZhYTg0YWUxYmUwNTI2YjZjNThjNTdkMmUzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVM
b2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lv
bklEKTsKIAogICAgIHZvaWQgcG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUoY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlJik7Ci0KKyAgICB2b2lkIG1lcmdlU3RhdGlzdGljcyhW
ZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVh
cihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xMDUsMTYgKzEwNSwxNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgorICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWMoY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYpOworICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgY2xlYXJEYXRhYmFz
ZUNvbnRlbnRzKCk7CiAgICAgYm9vbCBpbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKGNv
bnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBib29sIGluc2VydERvbWFpblJlbGF0
aW9uc2hpcChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmLCB1bnNpZ25lZCBkb21haW5JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluKTsKICAgICBib29sIHJlbGF0aW9u
c2hpcEV4aXN0cyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmLCBPcHRpb25hbDx1bnNpZ25lZD4g
Zmlyc3REb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNlY29uZERvbWFpbikgY29u
c3Q7CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3Q7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGJvb2wgY29uZmlybURvbWFpbkRvZXNO
b3RFeGlzdChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwotI2VuZGlmCisgICAgYm9v
bCBkb21haW5FeGlzdHMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICB2b2lk
IHVwZGF0ZUxhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpOworICAg
IHZvaWQgdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
aW50KTsKICAgICB2b2lkIHNldFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBXYWxsVGltZSk7CiAgICAgVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoKSBjb25zdDsK
ICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tp
ZXNGb3IoKSBjb25zdDsKQEAgLTE3NSw2ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCBtX2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50OwogICAgIG11
dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVt
ZW50OwogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3N0b3JhZ2VBY2Nlc3NVbmRlclRv
cEZyYW1lRG9tYWluc1N0YXRlbWVudDsKKyAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9z
dG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNFeGlzdHNTdGF0ZW1lbnQ7CiAgICAgV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbzsKICAgICBt
dXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG9FeGlzdHM7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tOwpAQCAtMTkxLDYgKzE5Myw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21F
eGlzdHM7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblN0YXRlbWVudDsKICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91cGRhdGVM
YXN0U2VlblN0YXRlbWVudDsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBt
X3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudDsKICAgICBXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKICAgICBtdXRhYmxl
IFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2lzUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7
CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcAppbmRleCBmNWU2NjYzYzYzNjBhN2VjZmRkMjg5Njk5ZDlkZmJlNTBkMTcw
YTdiLi42NTg5ZjZiMWRlMmJkODU3MjFjNjMwNzIxZDNjMzZmOTU0MWIxYzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtNzAx
LDE2ICs3MDEsNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xl
YXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZQogICAgIHVwZGF0ZUNvb2tpZUJs
b2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjp3YXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGN1cnJlbnQsIGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIHVwZGF0ZWQpIGNvbnN0Ci17Ci0gICAgaWYgKCFjdXJyZW50
LmhhZFVzZXJJbnRlcmFjdGlvbiAmJiAhdXBkYXRlZC5oYWRVc2VySW50ZXJhY3Rpb24pCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRp
bWUgPSBzdGQ6Om1heChjdXJyZW50Lm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCB1cGRh
dGVkLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKTsKLQotICAgIHJldHVybiB1cGRhdGVk
Lmxhc3RTZWVuIDw9IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgMjRfaDsKLX0KLQog
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Om1lcmdlU3RhdGlzdGljcyhW
ZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0aWNzKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNzE5LDExICs3MDksOCBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aQogICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFw
LmVuc3VyZShzdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4sIFsmc3RhdGlzdGljXSB7CiAgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShzdGF0aXN0aWMpOwogICAgICAgICB9KTsKLSAgICAgICAg
aWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICAgICAgaWYgKHdhc0FjY2Vzc2VkQXNG
aXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSwgc3Rh
dGlzdGljKSkKLSAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbisrOworICAgICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tZXJn
ZShzdGF0aXN0aWMpOwotICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggODc5ZTFhZmNmYjg2MjI5NzY0
NmI1MDA4MDZmZmM0ZjlhMGFhMDM0Ny4uNjgwNTRhNWMyMTQzZDY2ZThkODU1NjU0ZmE0OTY5YzNl
MjJiMmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OktleWVkRW5jb2Rlcj4gY3JlYXRlRW5jb2RlckZyb21EYXRhKCkgY29uc3Q7CiAgICAg
dm9pZCBtZXJnZVdpdGhEYXRhRnJvbURlY29kZXIoV2ViQ29yZTo6S2V5ZWREZWNvZGVyJik7CiAK
LSAgICB2b2lkIG1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jik7CisgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3MoY29uc3QgRnVuY3Rp
b248dm9pZChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik+JikgY29uc3Q7CiAKICAgICB2
b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3Zl
cnJpZGU7CkBAIC0xMTcsNyArMTE3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGhhc0hhZFVuZXhw
aXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgT3BlcmF0
aW5nRGF0ZXNXaW5kb3cpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkUmVtb3ZlQWxsV2Vic2l0ZURh
dGFGb3IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGJvb2wgc2hvdWxkQ2hlY2tGb3JHcmFuZGZh
dGhlcmluZykgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmLCBib29sIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcp
IGNvbnN0OwotICAgIGJvb2wgd2FzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFj
dGlvbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBjdXJyZW50LCBjb25zdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiB1cGRhdGVkKSBjb25zdDsKICAgICB2b2lkIGluY3JlbWVudFJlY29y
ZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVkIHJlY3Vyc2l2ZWx5
R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihjb25zdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21haW4+JiwgdW5zaWduZWQg
bnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKaW5kZXggNmY2MWVkMzQzZGUyNjZhYTM1ZjllYzBkYTc0MjExMDE5MzYy
YWZkYS4uOTlhNjcxMDY2Njk2ZjRmZDI4NmZjZDdkMjA3NWI0ZTc2NTk1M2ZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTA4LDYgKzEwOCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xhc3NpZnlQcmV2YWxlbnRSZXNvdXJjZXMoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNTdG9yYWdlSWZOZWVkZWQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1l
cmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJikgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBP
cGVuZXJEb21haW4mJikgPSAwOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA5NGYwMTY4MWY2ZDJkNGM4Njc5MDgyZmYwNTU3OGMw
NGMwMTQ2YzkwLi4xMTNkMzUzOGNmYTA5MDMxOThiYzIwOGI3ODY4MzA5NWI0OTg3MmJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMjY0
LDE5ICsyNjQsMTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXIKICAgICAvLyBjb21pbmcgZnJv
bSBJUEMuIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mgb25seSBjb250YWlucyBzdHJpbmdzIHdoaWNo
IGFyZSBzYWZlIHRvIG1vdmUgdG8gb3RoZXIgdGhyZWFkcyBhcyBsb25nCiAgICAgLy8gYXMgbm9i
b2R5IG9uIHRoaXMgdGhyZWFkIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRob3NlIHN0cmluZ3MuCiAg
ICAgcG9zdFRhc2soW3RoaXMsIHN0YXRpc3RpY3MgPSBXVEZNb3ZlKHN0YXRpc3RpY3MpXSgpIG11
dGFibGUgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlIHx8ICFpczxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSkpCisgICAgICAgIGlm
ICghbV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0
byYgbWVtb3J5U3RvcmUgPSBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU+KCptX3N0YXRpc3RpY3NTdG9yZSk7Ci0gICAgCi0gICAgICAgIG1lbW9yeVN0b3JlLm1lcmdl
U3RhdGlzdGljcyhXVEZNb3ZlKHN0YXRpc3RpY3MpKTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3Rv
cmUtPm1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKHN0YXRpc3RpY3MpKTsKIAogICAgICAgICAvLyBX
ZSBjYW4gY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3QgdG8gcHJvY2VzcyBzdGF0aXN0aWNzIHNp
bmNlIHdlJ3JlIGRvaW5nIGl0IHN5bmNocm9ub3VzbHkgYmVsb3cuCi0gICAgICAgIG1lbW9yeVN0
b3JlLmNhbmNlbFBlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3QoKTsKKyAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUtPmNhbmNlbFBlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVl
c3QoKTsKIAogICAgICAgICAvLyBGaXJlIGJlZm9yZSBwcm9jZXNzaW5nIHN0YXRpc3RpY3MgdG8g
cHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmFzdCBhcyBwb3NzaWJsZSB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgotICAgICAgICBtZW1vcnlTdG9yZS51cGRhdGVDb29raWVCbG9ja2luZyhb
XSgpIHsgfSk7Ci0gICAgICAgIG1lbW9yeVN0b3JlLnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJl
Y29yZHMoKTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnVwZGF0ZUNvb2tpZUJsb2NraW5n
KFtdKCkgeyB9KTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnByb2Nlc3NTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHMoKTsKICAgICB9KTsKIH0KIApAQCAtNTk3LDYgKzU5NSwzNSBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbgogICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFNlY29u
ZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBi
b29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4u
aXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRD
b3B5KCksIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0
YVJlY29yZHNSZW1vdmVkLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpIHsKKyAg
ICAgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mgc3RhdGlzdGljKGRvbWFpbik7CisgICAg
ICAgICAgICBzdGF0aXN0aWMubGFzdFNlZW4gPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFz
dFNlZW4uc2Vjb25kcygpKTsKKyAgICAgICAgICAgIHN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rp
b24gPSBoYWRVc2VySW50ZXJhY3Rpb247CisgICAgICAgICAgICBzdGF0aXN0aWMubW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvbi5zZWNvbmRzKCkpOworICAgICAgICAgICAgc3RhdGlzdGljLmdyYW5k
ZmF0aGVyZWQgPSBpc0dyYW5kZmF0aGVyZWQ7CisgICAgICAgICAgICBzdGF0aXN0aWMuaXNQcmV2
YWxlbnRSZXNvdXJjZSA9IGlzUHJldmFsZW50OworICAgICAgICAgICAgc3RhdGlzdGljLmlzVmVy
eVByZXZhbGVudFJlc291cmNlID0gaXNWZXJ5UHJldmFsZW50OworICAgICAgICAgICAgc3RhdGlz
dGljLmRhdGFSZWNvcmRzUmVtb3ZlZCA9IGRhdGFSZWNvcmRzUmVtb3ZlZDsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKCF0b3BGcmFtZURvbWFpbi5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiB0b3BGcmFtZURvbWFpbnM7CisgICAg
ICAgICAgICAgICAgdG9wRnJhbWVEb21haW5zLmFkZCh0b3BGcmFtZURvbWFpbik7CisgICAgICAg
ICAgICAgICAgc3RhdGlzdGljLnN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgPSBXVEZNb3Zl
KHRvcEZyYW1lRG9tYWlucyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFZlY3RvcjxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOworICAgICAgICAgICAgc3RhdGlzdGlj
cy5hcHBlbmQoV1RGTW92ZShzdGF0aXN0aWMpKTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0
b3JlLT5tZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0aWNzKSk7CisgICAgICAgIH0KKyAg
ICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7
Cit9CiAgICAgCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDdlYWUxYTdjODkxNDE5ZDQxYjYwNTI1
NDUyNDZkZmUxNGFlZDZmZGEuLmZiMTgxMDUxYTRjNGE1NGVjMzU1ZGJhNTBlZjA2OTRmMjdlYWI3
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAg
LTEyOSw2ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJh
bWUoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogICAgIHZv
aWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5n
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBTZWNvbmRz
IGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9v
bCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBkYzI1YzZiZjAw
YTM1ZDc0YmI4MGY1ODhiNWM5NzI4YzE2ODZjY2YxLi4yZmI3ODA5YTA2Y2JkZDRkMTNhMjQ3M2M0
ZDQyMGNjOTQxMzcyNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcApAQCAtOTc0LDYgKzk3NCwxOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYQogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6bWVyZ2VTdGF0aXN0aWNGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBTZWNvbmRz
IGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9v
bCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBu
ZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGRvbWFpbiwgdG9wRnJhbWVEb21haW4sIGxhc3RT
ZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3Jh
bmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1v
dmVkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorfQorCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9t
YWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggOTBjZjczMmY3MmIzOTE4ZjY2
YmNkMzVkMjA0NzI5MmEwMzYwMTNkNy4uM2E2MjU2ZjJmNDhmYWZiZjZhN2JkY2FkZTIwOGJiZjI0
ODc5MTU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaApAQCAtMjQyLDYgKzI0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBB
TDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1lcmdl
U3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNl
ckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNH
cmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5z
aWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vz
c2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNlc3Npb25JRCwg
Ym9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldElz
UnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklELCBib29sIHZh
bHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYTc3
NjYzZTdjZjY0MTM4YjY3OTE4MGIxYzlhYzY0YjQ3Mzg5YzcxYi4uMWVmOGZiYzBkYWMxNGYzNmI3
N2ZjNzU5MWUyNDRiOWUzMjU5MTg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05NCw2ICs5NCw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJc1ZlcnlQ
cmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHRhcmdldERvbWFpbikgLT4gKGJvb2wgaXNWZXJ5UHJldmFsZW50KSBBc3lu
YwogICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRMYXN0
U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHJlc291cmNlRG9tYWluLCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCisgICAgTWVyZ2VT
dGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHRvcEZyYW1lRG9tYWluLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJl
ZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVpbnQ2NF90IGRhdGFS
ZWNvcmRzUmVtb3ZlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRQcmV2YWxlbnRSZXNvdXJjZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNl
RG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2Rl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVz
b3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgSGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21h
aW4pIC0+IChib29sIGhhZFVzZXJJbnRlcmFjdGlvbikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4
IDk2MGY5ZmIwZjIyYjllYzgwOWU2NTFiZWI5ZTVhNzYzMGM2ZWQ5NTQuLjUxMmUwNWNjODViYzRl
ZTE4YWM1NjhmY2QzOTgzNzBjYmZlYmEyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtMTE5LDYgKzEx
OSwxNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLAogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1l
RG9tYWluLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUg
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQ
cmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92
ZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0YXRp
c3RpY0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+bWVyZ2VT
dGF0aXN0aWNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZURvbWFpbiktPnN0cmluZygp
KSwgU2Vjb25kcyB7IGxhc3RTZWVuIH0sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyB7IG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb24gfSwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwg
aXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIFtjb250ZXh0LCBjb21wbGV0aW9u
SGFuZGxlcl0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9KTsK
KyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisjZW5kaWYKK30KKwogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1
ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKQEAgLTI2MCw3ICsyNzEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3Rvcgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWRGdW5j
dGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxs
YmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5pc0dyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaAppbmRleCBjY2Y1OTEzODlmYjkxNWYyMzUxNmQzMDQ4YzllMjdkY2MxOTdlMzI1
Li5mMmExNzgyOTZlYTc5ZWI0ZWY1NTdhYjBlMDc4YjlhZDZlYTlhYTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApA
QCAtNDksNiArNDksOCBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlV2l0aENvbXBsZXRpbwogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlRm9yRGVidWdNb2RlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NE
ZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7ICAgIAogdHlwZWRlZiB2b2lkICgq
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rpb24pKHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzTGFzdFNlZW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NMYXN0U2VlbkZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKK3R5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0Z1bmN0aW9u
KSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBk
b3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQs
IGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0Z1bmN0
aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRl
eHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5
cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2VGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDMxYTcyNTdjMTAxYTEwMDU3MTI4YjY4NzViZDQzYjcwNmMzNGU4NTMuLjM4MzBiMjUyYzFiNDhk
YTc0MWE4NGI4NTlkYzg2ZTMxNDA4NWNkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTM1LDYgKzUz
NSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldExhc3RTZWVuKHNlc3Npb25JRCwgcmVzb3VyY2VE
b21haW4sIGxhc3RTZWVuKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBTZWNvbmRzIGxhc3RTZWVu
LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQ
cmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Ok1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhzZXNzaW9u
SUQsIHJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgbGFzdFNlZW4sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1By
ZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJQ
cmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAppbmRleCA2NDcxM2FiMWEwY2ZkMjZkZjJmODYxZGIxYTRhZTdhZjM4NmRiOTZmLi4yZDZhZGJl
M2JhM2Q1ZmNlNWM5NmFlZjYzYWVmYmNmNmVmMmNkMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTEzLDYg
KzExMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5n
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vj
b25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1lcmdlU3RhdGlz
dGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVy
YWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZh
dGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQg
ZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFs
PFNlY29uZHM+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q2Fj
aGVNYXhBZ2VDYXAoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA2OTM1NWQ3OTdjMjVjOGJjMjAx
OTlmNzdhZDA4NjU0MDA1MDk2NGU0Li42MjdkMmQ5OWNiM2VjNzI3MGI4NzY3YmEzMDZkOGZiNTA5
YThiZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTIxNCw2ICsxMjE0LDI0IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pCiAgICAgfQogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmlzR3Jh
bmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGlz
UHJldmFsZW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIAorICAgIGlmICh1cmwucHJvdG9jb2xJc0Fib3V0KCkgfHwgdXJsLmlz
RW1wdHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1By
b2Nlc3MoKSkgeworICAgICAgICAgICAgcHJvY2Vzcy0+aXNHcmFuZGZhdGhlcmVkKG1fc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzUG9vbHMoKS5z
aXplKCkgPT0gMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwog
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVy
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC0xNTMzLDYgKzE1NTEsMjEgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRMYXN0U2Vlbihjb25zdCBVUkwmIHVybCwgU2Vjb25kcyBzZWNv
bmRzLCBDb21wbGV0aW9uSGEKICAgICB9CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6bWVy
Z2VTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJsICwgY29uc3QgVVJMJiB0b3BGcmFt
ZVVybCwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMg
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQ
cmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpIHx8IHVybC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBwcm9jZXNzLT5tZXJnZVN0YXRpc3RpY0ZvclRl
c3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdG9wRnJhbWVVcmwgfSwgbGFzdFNlZW4sIGhhZFVz
ZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVk
LCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIFtwcm9j
ZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKKyAgICB9Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOGE1ZmViYTgzYjdkYTBkY2M3NGI3OGM1YTAxOTJjMGY3
ZjUyZWM3Zi4uMDE4MzdmZWEwMjc2ZjRiODRhNmFkYzRkZTUwNGVlZDI1N2VhYWQ3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaApAQCAtMTU5LDkgKzE1OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZVN0
YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRo
ZXJlZChjb25zdCBVUkwmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgc2V0VXNlSVRQRGF0YWJhc2UoYm9vbCk7CiAgICAgdm9pZCBz
ZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFVSTCYsIFNlY29uZHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiB0b3BGcmFtZVVybCwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBo
YWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9v
bCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50
LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJv
b2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRJc1J1bm5pbmdS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0UHJ1bmVFbnRyaWVzRG93blRvKHNpemVfdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA5ZWFhZjY4NzE1MjY5ZDBlNzQ1MzYzYzQ5ZjNlOGZhMDZlYmY2ZGQ2Li43
MGYyMGEzYmEzOTJjOWQzZjQ1ZWZhMjI0OWUwMWNjYjdiY2NjMjg0IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTkt
MTAtMDIgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXBkYXRlZCByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgYXJlIG5ldmVyIG1lcmdlZCBpbnRv
IHRoZSBTUUxpdGUgRGF0YWJhc2UgYmFja2VuZCAoMjAyMzcyKS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjM3MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTU4NTQ1NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4gCisK
KyAgICAgICAgQWRkZWQgdGVzdGluZyBmdW5jdGlvbmFsaXR5IHRvIHRoZSBtZXJnZVN0YXRpc3Rp
Y3MoKSBmdW5jdGlvbiBvZiB0aGUgCisgICAgICAgIFNRTGl0ZSBiYWNrZW5kLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdl
VG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTWVyZ2VT
dGF0aXN0aWMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNl
dE1lcmdlU3RhdGlzdGljQ2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlz
dGljc01lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRp
ZE1lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmg6CisKIDIwMTktMTAtMDIgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtld3NdIERlZGljYXRlIGEgYm90IGZvciBtYWNPUy1IaWdoLVNpZXJyYS1E
ZWJ1Zy1CdWlsZC1FV1MgcXVldWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGEwMWQ0
ZmI1MzkwZDRhZDRmYzU2ZjZkZjg2NzM2OWJmOWM2NmE2OTMuLjQyYWFkNTRlMzExM2EzODNmNzM0
OTE3NzQxNTIxN2NlZDk5MGQ0YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjk4
LDYgKzI5OCw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShET01TdHJp
bmcgaG9zdE5hbWUsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzTGFzdFNlZW4oRE9NU3RyaW5nIGhvc3ROYW1lLCBkb3VibGUgc2Vjb25kcywgb2JqZWN0
IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3Rp
YyhET01TdHJpbmcgaG9zdE5hbWUsIERPTVN0cmluZyB0b3BGcmFtZURvbWFpbiwgZG91YmxlIGxh
c3RTZWVuLCBib29sZWFuIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24sIGJvb2xlYW4gaXNHcmFuZGZhdGhlcmVkLCBib29sZWFuIGlzUHJldmFsZW50
LCBib29sZWFuIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgbG9uZyBkYXRhUmVjb3Jkc1JlbW92
ZWQsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFuIHZhbHVlLCBvYmplY3Qg
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRS
ZXNvdXJjZShET01TdHJpbmcgaG9zdE5hbWUsIGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgYm9vbGVhbiBpc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShE
T01TdHJpbmcgaG9zdE5hbWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA5YzEwYjQwODRkOWJmM2Q5
ZmZkNGJkMDdhNWViNWZmNDNlY2Q5NGQ4Li4wMWI3NTYyZDFjMGM4ZDEyMzY5MzQwNjcxZmMwMmUz
ZDdlNmFlMTkzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzU2LDYgKzM1NiwxMSBAQCB2b2lkIElu
amVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlk
U2V0TGFzdFNlZW5DYWxsYmFjaygpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZE1l
cmdlU3RhdGlzdGljIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERp
ZFNldE1lcmdlU3RhdGlzdGljQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERp
ZFNldFByZXZhbGVudFJlc291cmNlIikpIHsKICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0
aWNzQ2FsbERpZFNldFByZXZhbGVudFJlc291cmNlQ2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDgy
ZGI2NzQyOTk5Yzc3ZGJiY2ZjMzUyNDY1NDA2NTc0YmIzNjM1MTcuLjAxMTA0YWNmODRiYWIxMjdl
NTE3M2QzNzkzMmU0Mjk5YWZhM2MxNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNzMyLDYgKzczMiw3IEBAIGVu
dW0gewogICAgIFNldFN0YXRpc3RpY3NEZWJ1Z01vZGVDYWxsYmFja0lELAogICAgIFNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZUNhbGxiYWNrSUQsCiAgICAgU2V0U3Rh
dGlzdGljc0xhc3RTZWVuQ2FsbGJhY2tJRCwKKyAgICBTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0
aWNDYWxsYmFja0lELAogICAgIFNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNr
SUQsCiAgICAgU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrSUQsCiAg
ICAgU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkNhbGxiYWNrSUQsCkBAIC0xNDUz
LDYgKzE0NTQsNTcgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldExhc3RT
ZWVuQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc0xh
c3RTZWVuQ2FsbGJhY2tJRCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc01l
cmdlU3RhdGlzdGljKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiB0b3BGcmFtZURv
bWFpbiwgZG91YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJl
dmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVk
LCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNh
bGxiYWNrKFNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0NhbGxiYWNrSUQsIGNvbXBsZXRpb25I
YW5kbGVyKTsKKworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7Cisg
ICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKKworICAgIGtleXMuYXBw
ZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lIikpKTsK
KyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoaG9z
dE5hbWUpKSk7CisgICAgCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiVG9wRnJhbWVEb21haW4iKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyh0b3BGcmFtZURvbWFpbikpKTsKKworICAg
IGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxhc3RT
ZWVuIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tEb3VibGVDcmVhdGUobGFzdFNl
ZW4pKSk7CisKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJIYWRVc2VySW50ZXJhY3Rpb24iKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRX
SyhXS0Jvb2xlYW5DcmVhdGUoaGFkVXNlckludGVyYWN0aW9uKSkpOworCisgICAga2V5cy5hcHBl
bmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvbiIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLRG91YmxlQ3JlYXRl
KG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24pKSk7CisKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc0dyYW5kZmF0aGVyZWQiKSkpOworICAg
IHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNHcmFuZGZhdGhlcmVkKSkp
OworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiSXNQcmV2YWxlbnQiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5D
cmVhdGUoaXNQcmV2YWxlbnQpKSk7CisKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1ZlcnlQcmV2YWxlbnQiKSkpOworICAgIHZhbHVlcy5h
cHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNWZXJ5UHJldmFsZW50KSkpOworCisgICAg
a2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRGF0YVJl
Y29yZHNSZW1vdmVkIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tVSW50NjRDcmVh
dGUoZGF0YVJlY29yZHNSZW1vdmVkKSkpOworCisgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdL
ZXlzKGtleXMuc2l6ZSgpKTsKKyAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdWYWx1ZXModmFsdWVz
LnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVl
c1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
U2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljIikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlv
bmFyeVJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLRGljdGlvbmFyeUNyZWF0ZShyYXdLZXlz
LmRhdGEoKSwgcmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5zaXplKCkpKTsKKyAgICBXS0J1bmRs
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRs
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQor
Cit2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0TWVyZ2VTdGF0aXN0aWNDYWxs
YmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTZXRTdGF0aXN0aWNzTWVyZ2VT
dGF0aXN0aWNDYWxsYmFja0lEKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUsIEpTVmFs
dWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2so
U2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRs
ZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaAppbmRleCA0OWU1ZmYwODc2MDY3OWY4ZjczYjU1Y2VkOWZmYzc1NTBhMWQ2YmRmLi5m
MTcwMDEyOTgzMWI2Zjk0NzA3NjJmMDMwZmVjZDcwMWM0ZDNiYTNiIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMzk2LDYg
KzM5Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0UHJldmFsZW50
UmVzb3VyY2VGb3JEZWJ1Z01vZGVDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0xh
c3RTZWVuKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBkb3VibGUgc2Vjb25kcywgSlNWYWx1ZVJlZiBj
b21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldExhc3RTZWVu
Q2FsbGJhY2soKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhKU1N0cmlu
Z1JlZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4sIGRvdWJsZSBsYXN0U2Vl
biwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQ
cmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgSlNWYWx1ZVJlZiBjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdlU3RhdGlzdGlj
Q2FsbGJhY2soKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShKU1N0
cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFByZXZhbGVudFJlc291cmNlQ2FsbGJh
Y2soKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoSlNTdHJp
bmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlN2RiZTM4
NzdkYzEyZjdlMjg2YTMzMmU3MThjNGI1MzRkOWNhMDM3Li4wYmQ3NzYxYmJmYzU1MDRlZjIwNTlk
OWExZjNiNDQ3NTc2MDc0ZTBiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcApAQCAtMzI2MSw2ICszMjYxLDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0
YXRpc3RpY3NMYXN0U2VlbihXS1N0cmluZ1JlZiBob3N0LCBkb3VibGUgc2Vjb25kcykKICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRMYXN0U2VlbigpOwogfQogCit2b2lkIFRlc3RDb250
cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoV0tTdHJpbmdSZWYgaG9zdCwgV0tT
dHJpbmdSZWYgdG9wRnJhbWVEb21haW4sIGRvdWJsZSBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50
ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRm
YXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIGludCBkYXRh
UmVjb3Jkc1JlbW92ZWQpCit7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0
IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNZXJn
ZVN0YXRpc3RpYyhUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpLCBob3N0LCB0b3BG
cmFtZURvbWFpbiwgbGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50
LCBkYXRhUmVjb3Jkc1JlbW92ZWQsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVz
dWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRNZXJnZVN0YXRpc3RpYygpOworfQorCiB2b2lkIFRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYg
aG9zdCwgYm9vbCB2YWx1ZSkKIHsKICAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRl
eHQgY29udGV4dCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
aW5kZXggZmQxYzUyYWE0MGFmMjZkNGRkMGQ4NjJhMjAzOTY2ODdjMjY4NzIwZi4uNmMyZDJkODg2
ZTAzYjc3YjYyYmU1NTM4YTIyYjliMGU4ZDRjNDFlNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaApAQCAtMjEwLDYgKzIxMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tTdHJpbmdSZWYgaG9zdE5hbWUpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBkb3VibGUg
c2Vjb25kcyk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoV0tTdHJpbmdS
ZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4sIGRvdWJsZSBsYXN0U2VlbiwgYm9v
bCBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBi
b29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxl
bnQsIGludCBkYXRhUmVjb3Jkc1JlbW92ZWQpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUs
IGJvb2wgdmFsdWUpOwogICAgIFN0cmluZyBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBjNGQxOGFiZDlh
NWM0YWMzM2JmMmFlMDI2YzI4ZmIwZTYyMmUzYTczLi4yZjhiMzA2ZTJjOGM4NzNmZmQzMTc5NjFj
ODEyYzViYzg4MmI2M2NkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcApAQCAtMTEwMCw2ICsxMTAwLDM2IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyIp
KSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpOworCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURp
Y3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3ROYW1lS2V5ID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSG9zdE5hbWUiKSk7CisgICAgICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB0b3BGcmFtZURvbWFpbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlRvcEZyYW1lRG9tYWluIikpOworICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbGFzdFNlZW5LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJMYXN0U2VlbiIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IGhhZFVzZXJJbnRlcmFjdGlvbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkhhZFVzZXJJbnRlcmFjdGlvbiIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJNb3N0UmVjZW50VXNlckludGVyYWN0aW9uIikpOworICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaXNHcmFuZGZhdGhlcmVkS2V5ID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNHcmFuZGZhdGhlcmVkIikpOworICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaXNQcmV2YWxlbnRLZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1ByZXZhbGVudCIpKTsKKyAgICAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IGlzVmVyeVByZXZhbGVudEtleSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIklzVmVyeVByZXZhbGVudCIpKTsKKyAgICAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IGRhdGFSZWNvcmRzUmVtb3ZlZEtleSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRhdGFSZWNvcmRzUmVtb3ZlZCIpKTsKKyAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRpbWVzQWNjZXNzZWRGaXJzdFBhcnR5SW50ZXJhY3Rp
b25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaW1lc0FjY2Vz
c2VkRmlyc3RQYXJ0eUludGVyYWN0aW9uIikpOworCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3RO
YW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXko
bWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQoKSkpOworICAgICAgICBXS1N0
cmluZ1JlZiB0b3BGcmFtZURvbWFpbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdG9wRnJhbWVEb21haW5L
ZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tEb3VibGVSZWYgbGFzdFNlZW4gPSBzdGF0aWNfY2FzdDxX
S0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25h
cnksIGxhc3RTZWVuS2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiBoYWRVc2VySW50
ZXJhY3Rpb24gPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBoYWRVc2VySW50ZXJhY3Rpb25LZXkuZ2V0KCkp
KTsKKyAgICAgICAgV0tEb3VibGVSZWYgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiA9IHN0YXRp
Y19jYXN0PFdLRG91YmxlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5
RGljdGlvbmFyeSwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbktleS5nZXQoKSkpOworICAgICAg
ICBXS0Jvb2xlYW5SZWYgaXNHcmFuZGZhdGhlcmVkID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaXNHcmFu
ZGZhdGhlcmVkS2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiBpc1ByZXZhbGVudCA9
IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNz
YWdlQm9keURpY3Rpb25hcnksIGlzUHJldmFsZW50S2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9v
bGVhblJlZiBpc1ZlcnlQcmV2YWxlbnQgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBpc1ZlcnlQcmV2YWxl
bnRLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tVSW50NjRSZWYgZGF0YVJlY29yZHNSZW1vdmVkID0g
c3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2Fn
ZUJvZHlEaWN0aW9uYXJ5LCBkYXRhUmVjb3Jkc1JlbW92ZWRLZXkuZ2V0KCkpKTsKKyAgICAgICAg
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzTWVyZ2VT
dGF0aXN0aWMoaG9zdE5hbWUsIHRvcEZyYW1lRG9tYWluLCBXS0RvdWJsZUdldFZhbHVlKGxhc3RT
ZWVuKSwgV0tCb29sZWFuR2V0VmFsdWUoaGFkVXNlckludGVyYWN0aW9uKSwgV0tEb3VibGVHZXRW
YWx1ZShtb3N0UmVjZW50VXNlckludGVyYWN0aW9uKSwgV0tCb29sZWFuR2V0VmFsdWUoaXNHcmFu
ZGZhdGhlcmVkKSwgV0tCb29sZWFuR2V0VmFsdWUoaXNQcmV2YWxlbnQpLCBXS0Jvb2xlYW5HZXRW
YWx1ZShpc1ZlcnlQcmV2YWxlbnQpLCBXS1VJbnQ2NEdldFZhbHVlKGRhdGFSZWNvcmRzUmVtb3Zl
ZCkpOworCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKICAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZSIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9k
eSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogCkBAIC0xODAxLDYgKzE4MzEsMTIgQEAg
dm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0TGFzdFNlZW4oKQogICAgIFdLUGFnZVBvc3RNZXNz
YWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZp
ZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9CiAKK3ZvaWQgVGVzdEludm9j
YXRpb246OmRpZE1lcmdlU3RhdGlzdGljKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJD
YWxsRGlkTWVyZ2VTdGF0aXN0aWMiKSk7CisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVk
QnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0
UHJldmFsZW50UmVzb3VyY2UoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRT
ZXRQcmV2YWxlbnRSZXNvdXJjZSIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uaAppbmRleCA3NmFhOWI4ZTFkYzAyZWM4YWQ5Mzg2OTQxNTc0NThmMTk1ZGEzY2Q2Li5hMjY1
ZWI5YjI2ZTk0ZDFlNGE4ZmZkY2VmNWRlMjk0Mzk1MWJiNDA1IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZFNldFN0YXRpc3RpY3NEZWJ1Z01vZGUoKTsKICAgICB2b2lkIGRpZFNldFByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKCk7CiAgICAgdm9pZCBkaWRTZXRMYXN0U2VlbigpOworICAgIHZv
aWQgZGlkTWVyZ2VTdGF0aXN0aWMoKTsKICAgICB2b2lkIGRpZFNldFByZXZhbGVudFJlc291cmNl
KCk7CiAgICAgdm9pZCBkaWRTZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGRp
ZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE4NGE5MmZjOGIzMWY4NWQ3NmQ5
ZDk1MTY5ZWFmYjQ5ODdjMjNlNjcuLjI1MTg2NmIxZGQ0ZTc5OTAzZTZlMzAyYjhiMzE4NDNkN2Nl
M2MwZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOS0xMC0wMiAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGVkIHJlc291cmNlIGxv
YWQgc3RhdGlzdGljcyBhcmUgbmV2ZXIgbWVyZ2VkIGludG8gdGhlIFNRTGl0ZSBEYXRhYmFzZSBi
YWNrZW5kICgyMDIzNzIpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAyMzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTg1NDU0Mj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLiAKKworICAgICAgICBBZGRlZCBsYXlvdXQg
dGVzdHMgdG8gdGVzdCBzdWNjZXNmdWwgbWVyZ2luZyBvZiByZXNvdXJjZSBsb2FkCisgICAgICAg
IHN0YXRpc3RpY3MgaW50byBTUUxpdGUgYmFja2VuZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRl
LWRhdGFiYXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0
YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9t
ZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1k
b2VzLXBhcnRpYWxseS1vdmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGlj
LWRvZXMtcGFydGlhbGx5LW92ZXJ3cml0ZS1kYXRhYmFzZS5odG1sOiBBZGRlZC4KKwogMjAxOS0x
MC0wMiAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
IFVucmV2aWV3ZWQgZ2FyZGVuaW5nOiBhZGQgbmV3IGV4cGVjdGF0aW9ucyBhZnRlciByMjUwNjAy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90LW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Ut
c3RhdGlzdGljLWRvZXMtbm90LW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmI0MDFmOWE1ZTlkY2NmMjNhMzc3MDAzZDYyN2FhNWY4ODRmZDM4NgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9t
ZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEzIEBACitUZXN0cyB0aGF0IG1lcmdlZCBzdGF0aXN0aWMgZG9lcyBub3Qgb3Zl
cndyaXRlIG9sZCBzdGF0aXN0aWMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgSG9zdCBkaWQgbm90IG92ZXJ3cml0ZSBvbGQgcHJldmFsZW50IHJlc291cmNlIHZhbHVlLgor
UEFTUyBIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCB2ZXJ5IHByZXZhbGVudCByZXNvdXJjZSB2
YWx1ZS4KK1BBU1MgSG9zdCBkaWQgbm90IG92ZXJ3cml0ZSBvbGQgaGFkIHVzZXIgaW50ZXJhY3Rp
b24gdmFsdWUKK1BBU1MgSG9zdCBkaWQgbm90IG92ZXJ3cml0ZSBvbGQgZ3JhbmRmYXRoZXJlZCB2
YWx1ZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90LW92ZXJ3cml0ZS1kYXRhYmFzZS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3Rp
Yy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjQ5ZWVjMzll
M2YxMWI1ZTQ1N2RiZDhiYjkyZWM3ZGJjNWQ4ZWRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1k
b2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDc5IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVU
Ri04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD5kZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBtZXJnZWQgc3RhdGlzdGljIGRvZXMg
bm90IG92ZXJ3cml0ZSBvbGQgc3RhdGlzdGljIik7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InNldFRpbWVvdXQoJ3NldFVwQW5kUnVuKCknLCAwKSI+Cis8c2NyaXB0PgorICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29uc3QgdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCI7CisgICAgY29uc3Qgc2FtcGxlVG9wRnJhbWVVUkwgPSAiaHR0cDovL2xvY2FsaG9zdDo4
MDAwIjsKKyAgICBjb25zdCBvbGRlclRpbWVzdGFtcCA9IE1hdGgucm91bmQoKG5ldyBEYXRlKCkp
LmdldFRpbWUoKSAvIDEwMDApOworICAgIGNvbnN0IG5ld2VyVGltZXN0YW1wID0gb2xkZXJUaW1l
c3RhbXAgKyAxMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ZnVuY3Rpb24gaW5zZXJ0U2Vjb25kU3RhdGlzdGljKCkgeworICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWModXJsLCAiIiwgb2xkZXJUaW1lc3RhbXAsIGZhbHNlLCA5
OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgaWYgKHRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiSG9zdCBkaWQgbm90IG92ZXJ3cml0ZSBvbGQgcHJldmFsZW50IHJlc291
cmNlIHZhbHVlLiIpOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
SG9zdCBkaWQgb3ZlcndyaXRlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuIikKKyAgICAg
ICAgICAKKyAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50
UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBkaWQgbm90IG92
ZXJ3cml0ZSBvbGQgdmVyeSBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuIik7CisgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBvdmVyd3JpdGUgb2xkIHZl
cnkgcHJldmFsZW50IHJlc291cmNlIHZhbHVlLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHVybCkpCisgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
Ikhvc3QgZGlkIG5vdCBvdmVyd3JpdGUgb2xkIGhhZCB1c2VyIGludGVyYWN0aW9uIHZhbHVlIik7
CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBvdmVy
d3JpdGUgb2xkIGhhZCB1c2VyIGludGVyYWN0aW9uIHZhbHVlIik7CisKKyAgICAgICAgICBpZiAo
dGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKHVybCkpCisgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoIkhvc3QgZGlkIG5vdCBvdmVyd3JpdGUgb2xkIGdyYW5kZmF0aGVyZWQgdmFs
dWUuIik7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRp
ZCBvdmVyd3JpdGUgb2xkIGdyYW5kZmF0aGVyZWQgdmFsdWUuIik7CisKKyAgICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICB9KTsKKyAgICAgIH0pOworICAg
IH0KKyAgICAKKyAgICBmdW5jdGlvbiBydW5UZXN0UnVubmVyVGVzdCgpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5zZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWModXJsLCAiIiwgbmV3ZXJUaW1lc3Rh
bXAsIHRydWUsIDEwMCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgMSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodXJsKSkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJl
c291cmNlLiIpOworCisgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzVmVy
eVByZXZhbGVudFJlc291cmNlKHVybCkpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9z
dCBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgaWYgKCF0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbih1cmwpKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlv
bi4iKTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKHVybCkpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9z
dCBnb3Qgc2V0IGFzIGdyYW5kZmF0aGVyZWQuIik7CisKKyAgICAgICAgICAgIGluc2VydFNlY29u
ZFN0YXRpc3RpYygpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRVcEFu
ZFJ1bigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOworICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcnVuVGVzdFJ1bm5l
clRlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dGVzdEZhaWxlZCgibm8gdGVzdFJ1bm5lciIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtb3ZlcndyaXRl
LWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2UtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkY2Y3ZTgwZDc5OTBmODA0NDcwMTRiN2Q1ZTJiYTAyNDI5
MzJlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IG1lcmdlZCBzdGF0aXN0aWMg
b3ZlcndyaXRlcyBvbGQgc3RhdGlzdGljCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIEhvc3Qgb3Zlcndyb3RlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuCitQQVNT
IEhvc3Qgb3Zlcndyb3RlIG9sZCB2ZXJ5IHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4KK1BBU1Mg
SG9zdCBvdmVyd3JvdGUgb2xkIHVzZXIgaW50ZXJhY3Rpb24gdmFsdWUuCitQQVNTIEhvc3Qgb3Zl
cndyb3RlIG9sZCBncmFuZGZhdGhlcmVkIHZhbHVlLgorUEFTUyBIb3N0IHNldCBhcyBzdWJmcmFt
ZSB1bmRlciB0b3AgZnJhbWUuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1kYXRhYmFzZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdl
LXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0MTJl
MTVjYzgwZjRlN2E4M2Y0MTU3ODAwZDdjMzRiMDg5ZjQ4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlz
dGljLWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSw5MCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJV
VEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQ+ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgbWVyZ2VkIHN0YXRpc3RpYyBvdmVy
d3JpdGVzIG9sZCBzdGF0aXN0aWMiKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
c2V0VGltZW91dCgnc2V0VXBBbmRSdW4oKScsIDApIj4KKzxzY3JpcHQ+CisgICAganNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICBjb25zdCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsK
KyAgICBjb25zdCBzYW1wbGVUb3BGcmFtZVVSTCA9ICJodHRwOi8vdG9wRnJhbWVEb21haW46ODAw
MCI7CisgICAgY29uc3Qgb2xkZXJUaW1lc3RhbXAgPSBNYXRoLnJvdW5kKChuZXcgRGF0ZSgpKS5n
ZXRUaW1lKCkgLyAxMDAwKTsKKyAgICBjb25zdCBuZXdlclRpbWVzdGFtcCA9IG9sZGVyVGltZXN0
YW1wICsgMTA7CisgICAgY29uc3QgbW9zdFJlY2VudFVJVG9UcmlnZ2VyRmlyc3RQYXJ0eUludGVy
YWN0aW9uQ291bnQgPSBuZXdlclRpbWVzdGFtcCArIDkwMDAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKKyAgICBmdW5jdGlvbiBpbnNlcnRTZWNvbmRTdGF0aXN0aWMo
KSB7CisgICAgCisgICAgICAgIC8vIHNldCB0aGlzIHJlc291cmNlIGFzIHByZXZhbGVudCBzbyBp
dCBpcyBpbiB0aGUgc3RhdGlzdGljcyBzdG9yZQorICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzYW1wbGVUb3BGcmFtZVVSTCwgdHJ1ZSwgZnVuY3Rpb24o
KSB7CisgICAgICAgIAorICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNZXJn
ZVN0YXRpc3RpYyh1cmwsIHNhbXBsZVRvcEZyYW1lVVJMLCBuZXdlclRpbWVzdGFtcCwgdHJ1ZSwg
bW9zdFJlY2VudFVJVG9UcmlnZ2VyRmlyc3RQYXJ0eUludGVyYWN0aW9uQ291bnQsIHRydWUsIHRy
dWUsIHRydWUsIDEsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5u
ZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJIb3N0IG92ZXJ3cm90ZSBvbGQgcHJldmFsZW50IHJlc291cmNlIHZh
bHVlLiIpOworICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkhvc3Qgbm90IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAg
ICAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZSh1cmwpKQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3Qgb3Zlcndy
b3RlIG9sZCB2ZXJ5IHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4iKTsKKyAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IG5vdCBzZXQg
YXMgdmVyeSBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgaWYgKHRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHVybCkpCisgICAgICAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBvdmVyd3JvdGUgb2xkIHVzZXIgaW50ZXJhY3Rp
b24gdmFsdWUuIik7CisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSG9zdCBub3QgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOwor
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzR3JhbmRmYXRoZXJlZCh1cmwpKQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkhvc3Qgb3Zlcndyb3RlIG9sZCBncmFuZGZhdGhlcmVkIHZhbHVlLiIpOworICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qg
bm90IHNldCBhcyBncmFuZGZhdGhlcmVkLiIpOworCisgICAgICAgICAgICAgICAgICBpZiAodGVz
dFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHVybCwgc2FtcGxl
VG9wRnJhbWVVUkwpKQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3Qgc2V0
IGFzIHN1YmZyYW1lIHVuZGVyIHRvcCBmcmFtZS4iKTsKKyAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IG5vdCBzZXQgYXMgc3ViZnJh
bWUgdW5kZXIgdG9wIGZyYW1lLiIpOworCisgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHJ1blRl
c3RSdW5uZXJUZXN0KCkgeworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNZXJnZVN0
YXRpc3RpYyh1cmwsICIiLCBvbGRlclRpbWVzdGFtcCwgZmFsc2UsIDAsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIDAsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJIb3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworCisgICAgICAgICAgICBp
ZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UodXJsKSkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291
cmNlLiIpOworCisgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24odXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdv
dCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKHVybCkpCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBnb3Qgc2V0IGFzIGdyYW5kZmF0aGVyZWQuIik7
CisKKyAgICAgICAgICAgIGluc2VydFNlY29uZFN0YXRpc3RpYygpOworICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzZXRVcEFuZFJ1bigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRy
dWUpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgcnVuVGVzdFJ1bm5lclRlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgibm8gdGVzdFJ1bm5lciIpOwor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVy
Z2Utc3RhdGlzdGljLWRvZXMtcGFydGlhbGx5LW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Ut
c3RhdGlzdGljLWRvZXMtcGFydGlhbGx5LW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzcxZTQ2Yjc5YzkxNTVlYTg3MTE5MGExNjMwMzE4ZTlkYmVkYjcwMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1wYXJ0aWFsbHktb3ZlcndyaXRlLWRhdGFiYXNlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IG1lcmdlZCBzdGF0aXN0aWMg
b3ZlcndyaXRlcyBvbGQgc3RhdGlzdGljCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIEhvc3Qgb3Zlcndyb3RlIG9sZCBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuCitQQVNT
IEhvc3Qgb3Zlcndyb3RlIG9sZCB2ZXJ5IHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4KK1BBU1Mg
SG9zdCBkaWQgbm90IG92ZXJ3cml0ZSBvbGQgdXNlciBpbnRlcmFjdGlvbiB2YWx1ZS4KK1BBU1Mg
SG9zdCBvdmVyd3JvdGUgb2xkIGdyYW5kZmF0aGVyZWQgdmFsdWUuCitQQVNTIEhvc3Qgc2V0IGFz
IHN1YmZyYW1lIHVuZGVyIHRvcCBmcmFtZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtcGFydGlhbGx5LW92
ZXJ3cml0ZS1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLXBhcnRpYWxseS1vdmVyd3JpdGUtZGF0
YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGQxNmQ2MGI4YjA5MjRlMjVmNDEzOWMwZjg4ODJiNDAz
MDJkMDcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLXBhcnRpYWxseS1vdmVyd3JpdGUt
ZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDkwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxh
bmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0
IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD5kZXNjcmlw
dGlvbigiVGVzdHMgdGhhdCBtZXJnZWQgc3RhdGlzdGljIG92ZXJ3cml0ZXMgb2xkIHN0YXRpc3Rp
YyIpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdzZXRVcEFu
ZFJ1bigpJywgMCkiPgorPHNjcmlwdD4KKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
IGNvbnN0IHVybCA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IHNhbXBsZVRv
cEZyYW1lVVJMID0gImh0dHA6Ly90b3BGcmFtZURvbWFpbjo4MDAwIjsKKyAgICBjb25zdCBvbGRl
clRpbWVzdGFtcCA9IE1hdGgucm91bmQoKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDApOwor
ICAgIGNvbnN0IG5ld2VyVGltZXN0YW1wID0gb2xkZXJUaW1lc3RhbXAgKyAxMDsKKyAgICBjb25z
dCBtb3N0UmVjZW50VUlUb1RyaWdnZXJGaXJzdFBhcnR5SW50ZXJhY3Rpb25Db3VudCA9IG5ld2Vy
VGltZXN0YW1wICsgOTAwMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAorICAgIGZ1bmN0aW9uIGluc2VydFNlY29uZFN0YXRpc3RpYygpIHsKKyAgICAKKyAgICAgICAg
Ly8gc2V0IHRoaXMgcmVzb3VyY2UgYXMgcHJldmFsZW50IHNvIGl0IGlzIGluIHRoZSBzdGF0aXN0
aWNzIHN0b3JlCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKHNhbXBsZVRvcEZyYW1lVVJMLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgCisgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKHVybCwgc2Ft
cGxlVG9wRnJhbWVVUkwsIG5ld2VyVGltZXN0YW1wLCBmYWxzZSwgbW9zdFJlY2VudFVJVG9Ucmln
Z2VyRmlyc3RQYXJ0eUludGVyYWN0aW9uQ291bnQsIHRydWUsIHRydWUsIHRydWUsIDEsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJI
b3N0IG92ZXJ3cm90ZSBvbGQgcHJldmFsZW50IHJlc291cmNlIHZhbHVlLiIpOworICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90
IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgICAgICAgIGlmICh0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3Qgb3Zlcndyb3RlIG9sZCB2ZXJ5IHByZXZh
bGVudCByZXNvdXJjZSB2YWx1ZS4iKTsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IG5vdCBzZXQgYXMgdmVyeSBwcmV2YWxlbnQg
cmVzb3VyY2UuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c0hhc0hhZFVzZXJJbnRlcmFjdGlvbih1cmwpKQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkhvc3QgZGlkIG5vdCBvdmVyd3JpdGUgb2xkIHVzZXIgaW50ZXJhY3Rpb24gdmFsdWUu
Iik7CisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCBub3QgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOworCisgICAgICAg
ICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKHVybCkp
CisgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBvdmVyd3JvdGUgb2xkIGdy
YW5kZmF0aGVyZWQgdmFsdWUuIik7CisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBub3Qgc2V0IGFzIGdyYW5kZmF0aGVyZWQuIik7
CisKKyAgICAgICAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1JlZ2lzdGVy
ZWRBc1N1YkZyYW1lVW5kZXIodXJsLCBzYW1wbGVUb3BGcmFtZVVSTCkpCisgICAgICAgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBzZXQgYXMgc3ViZnJhbWUgdW5kZXIgdG9wIGZyYW1l
LiIpOworICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkhvc3Qgbm90IHNldCBhcyBzdWJmcmFtZSB1bmRlciB0b3AgZnJhbWUuIik7CisKKyAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3Rh
dGUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICB9KTsKKyAg
ICB9CisgICAgCisgICAgZnVuY3Rpb24gcnVuVGVzdFJ1bm5lclRlc3QoKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKHVybCwgIiIsIG9sZGVyVGltZXN0
YW1wLCBmYWxzZSwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh1cmwp
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1Zl
cnlQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhv
c3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgICAgIGlmICh0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbih1cmwpKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlv
bi4iKTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlz
dGljc0dyYW5kZmF0aGVyZWQodXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0
IGdvdCBzZXQgYXMgZ3JhbmRmYXRoZXJlZC4iKTsKKworICAgICAgICAgICAgaW5zZXJ0U2Vjb25k
U3RhdGlzdGljKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFVwQW5k
UnVuKCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAgICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBydW5UZXN0UnVubmVy
VGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJubyB0ZXN0UnVubmVyIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRp
c3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380041</attachid>
            <date>2019-10-02 11:27:13 -0700</date>
            <delta_ts>2019-10-02 12:22:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202372-20191002112712.patch</filename>
            <type>text/plain</type>
            <size>112210</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRhZmYyNDlhNzIzYmYxNDJi
MzliNmQ1ODBkOTExODllZTQ2YWE5M2EuLjJkZWVmZmVmOTFlNmExMjM2YWJhMjdhNjE4NWM1MzU5
N2IxYmVlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDE5LTEwLTAyICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFyZSBuZXZlciBtZXJnZWQgaW50byB0aGUgU1FMaXRlIERh
dGFiYXNlIGJhY2tlbmQgKDIwMjM3MikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDIzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1ODU0NTQy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uIAorCisgICAgICAgIFRoaXMg
cGF0Y2ggaGFzIGEgbG90IG9mIGNoYW5nZXMgdG8gdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8g
YmUgYWJsZSAKKyAgICAgICAgdG8gdGVzdCB0aGUgbWVyZ2VTdGF0aXN0aWNzIGZ1bmN0aW9uLiBN
ZXJnaW5nIGZ1bmN0aW9uYWxpdHkgbWltaWNzCisgICAgICAgIHRoYXQgb2YgdGhlIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSBhbmQgdGhlIG1lcmdlKCkgZnVuY3Rpb24gaW4KKyAg
ICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToKKyAgICAgICAgQWRkZWQgbmV3IFNR
TGl0ZSBxdWVyaWVzIHRoYXQgYXJlIG5lZWRlZCB0byBtZXJnZSBuZXcgc3RhdGlzdGljcy4KKwor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJl
cGFyZVN0YXRlbWVudHMpOgorICAgICAgICBBZGRlZCBuZXcgcHJlcGFyZSBzdGF0ZW1lbnRzIGZv
ciBuZXcgU1FMaXRlIHF1ZXJpZXMuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluKToKKyAgICAgICAgVXBk
YXRlZCB0byB1c2UgZG9tYWluSUQoKSBpbnN0ZWFkIG9mIGNvbmZpcm1Eb21haW5Eb2VzTm90RXhp
c3Qgd2hpY2ggCisgICAgICAgIHdhcyBkZWxldGVkLiBDaGFuZ2VkIHRoZSBpbnNlcnQgYmluZCBw
YXJhbWV0ZXJzCisgICAgICAgIHRvIHV0aWxpemUgbmV3IGVudW0gb2YgT2JzZXJ2ZWQgRG9tYWlu
IHRhYmxlIGluZGljZXMgd2hpY2ggd2lsbCBoZWxwCisgICAgICAgIHJlZHVjZSBlcnJvcnMgaW4g
dGhlIGZ1dHVyZSBpZiB0aGUgZGF0YWJhc2Ugc2NoZW1hIGNoYW5nZXMuCisKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbGF0aW9uc2hpcEV4
aXN0cyBjb25zdCk6CisgICAgICAgIENoYW5nZWQge3B1YmxpY30gdG8ge3ByaXZhdGV9IGluIGxv
Z2dpbmcgc3RhdGVtZW50IHRvIGF2b2lkIGxlYWtpbmcKKyAgICAgICAgc2Vuc2l0aXZlIGluZm9y
bWF0aW9uIHdoZW4gbG9nZ2luZyB0aGUgcXVlcnkgZXJyb3IuCisKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvbmZpcm1Eb21haW5Eb2VzTm90
RXhpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGVzc2VudGlhbGx5
IGRvZXMgdGhlIGV4YWN0IHNhbWUgdGhpbmcgYXMgZG9tYWluSUQgYW5kCisgICAgICAgIHdlIGNh
biByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiBieSBkZWxldGluZyBpdCBhbmQgdHJhbnNpdGlvbmlu
ZyBhbGwKKyAgICAgICAgb3RoZXIgZnVuY3Rpb25zIHRvIHVzZSBkb21haW5JRCBpbnN0ZWFkLgor
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpk
b21haW5JRCBjb25zdCk6CisgICAgICAgIENoYW5nZWQge3B1YmxpY30gdG8ge3ByaXZhdGV9IGlu
IGxvZ2dpbmcgc3RhdGVtZW50IHRvIGF2b2lkIGxlYWtpbmcKKyAgICAgICAgc2Vuc2l0aXZlIGlu
Zm9ybWF0aW9uIHdoZW4gbG9nZ2luZyB0aGUgcXVlcnkgZXJyb3IuCisgICAgICAgIAorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9t
YWluUmVsYXRpb25zaGlwcyk6CisgICAgICAgIEluIG9yZGVyIHRvIHJldXNlIHRoaXMgY29kZSBm
b3IgdGhlIG1lcmdlIHN0YXRpc3RpY3MgZnVuY3Rpb24sIEkgYWRkZWQKKyAgICAgICAgYSBjaGVj
ayBiZWZvcmUgZWFjaCBpbnNlcnQgY2FsbCB0byBlbnN1cmUgdGhlIHJlbGF0aW9uc2hpcCBkb2Vz
IG5vdAorICAgICAgICBhbHJlYWR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS4gVGhpcyB3YXMgbm90
IG5lZWRlZCBiZWZvcmUgYmVjYXVzZSBpdAorICAgICAgICB3YXMgb25seSBjYWxsZWQgb24gYW4g
ZW1wdHkgZGF0YWJhc2UuCisKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1lcmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyk6Cisg
ICAgICAgIE1lcmdlcyBuZXcgc3RhdGlzdGljLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50
Rm9yRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0
ZWRUb1RoaXNEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFu
ZGZhdGhlckRhdGFGb3JEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzZXRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVkaWNh
dGVWYWx1ZUZvckRvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAg
Q2hhbmdlZCB7cHVibGljfSB0byB7cHJpdmF0ZX0gaW4gbG9nZ2luZyBzdGF0ZW1lbnQgdG8gYXZv
aWQgbGVha2luZworICAgICAgICBzZW5zaXRpdmUgaW5mb3JtYXRpb24gd2hlbiBsb2dnaW5nIHRo
ZSBxdWVyeSBlcnJvci4KKworICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZCk6CisgICAgICAgIEZpeCBhIGJ1ZyB1bmNv
dmVyZWQgYnkgdGhlIG5ldyB0ZXN0IGNhc2VzLgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cyk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVUcmVh
dG1lbnRGb3JPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJFeHBpcmVkVXNlckludGVyYWN0aW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckdy
YW5kZmF0aGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZUxhc3RTZWVuKToKKyAg
ICAgICAgQ2hhbmdlZCB7cHVibGljfSB0byB7cHJpdmF0ZX0gaW4gbG9nZ2luZyBzdGF0ZW1lbnQg
dG8gYXZvaWQgbGVha2luZworICAgICAgICBzZW5zaXRpdmUgaW5mb3JtYXRpb24gd2hlbiBsb2dn
aW5nIHRoZSBxdWVyeSBlcnJvci4KKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWQpOgor
ICAgICAgICBBIG5ldyBmdW5jdGlvbiB0aGF0IHV0aWxpemVzIGEgcXVlcnkgbmVlZGVkIGZvciB0
aGUgbWVyZ2luZyBvZiB0d28KKyAgICAgICAgc3RhdGlzdGljcy4KKyAgICAgICAgCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb25maXJtRG9t
YWluRG9lc05vdEV4aXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAg
ICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjptZXJnZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Ondhc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9Vc2VySW50ZXJhY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmVkIHRo
ZSBjaGVjayBmb3IgdXBkYXRpbmcgdGltZXMgYWNjZXNzZWQgZHVlIHRvIGZpcnN0IHBhcnR5IAor
ICAgICAgICBpbnRlcmFjdGlvbiwgd2hpY2ggaXMgZGF0YSBubyBsb25nZXIgbmVlZGVkIGluIHVw
ZGF0ZWQgSVRQLiAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgQWRkZWQg
dGhlIG1lcmdlU3RhdGlzdGljcyBmdW5jdGlvbiAocHJldmlvdXNseSBvbmx5IGluIHRoZSBtZW1v
cnkKKyAgICAgICAgc3RvcmUpIHRvIHRoZSBwYXJlbnQgY2xhc3Mgbm93IHRoYXQgaXQgaXMgdXNl
ZCBieSBib3RoIHN0b3Jlcy4KKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBub3cgY2FsbHMgbWVyZ2VTdGF0aXN0
aWNzIG9uIHRoZSBkYXRhYmFzZSBzdG9yZSBpZgorICAgICAgICBlbmFibGVkLgorCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNG
b3JUZXN0aW5nKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBidWlsZHMgYSB2ZWN0b3IgZnJvbSB0
aGUgc2FtcGxlIGRhdGEgdG8gdGVzdCB0aGUKKyAgICAgICAgbWVyZ2VTdGF0aXN0aWNzKCkgZnVu
Y3Rpb24gb2YgdGhlIGRhdGFiYXNlIHN0b3JlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzTWVyZ2VTdGF0aXN0aWMpOgorICAgICAgICBGaXhlZCBidWcgd2hlcmUgaXNHcmFuZGZhdGhl
cmVkIGZ1bmN0aW9uIGluIFdLV2Vic2l0ZURhdGFTdG9yZVJlZgorICAgICAgICB3YXMgY2FsbGlu
ZyBoYXNIYWRVc2VySW50ZXJhY3Rpb24gYnkgbWlzdGFrZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIFRoaXMgY29kZSBpcyBm
b3IgdGVzdGluZyB0aGUgbWVyZ2VTdGF0aXN0aWNzKCkgZnVuY3Rpb24uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmlzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgQWRkZWQg
dGhpcyBmdW5jdGlvbiB3aGljaCBjb250YWN0cyB0aGUgbmV0d29ya1Byb2Nlc3MgdG8gcmV0cmll
dmUgdGhlCisgICAgICAgIGdyYW5kZmF0aGVyZWQgdmFsdWUgZm9yIGEgZG9tYWluLiBUaGlzIHdh
cyBub3QgaW5jbHVkZWQgYmVmb3JlIGJlY2F1c2UKKyAgICAgICAgb2YgYSBidWcgaW4gV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLgorCiAyMDE5LTEwLTAyICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3Igbm9uLU1hYyBw
b3J0cyBhZnRlciByMjUwNjAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMmMzMDRlNzk0ZjIzNzEzM2ZiNWIyYzk3YWQ4
OGVkN2EwM2FhN2FmNy4uODhmZGI3ZTZkMmM2NGQyY2Q5M2Q4NTM3MWRmNmExZDFjMDE3MmVjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwCkBAIC03MCw2ICs3MCw4IEBAIGNvbnN0ZXhwciBhdXRvIGluc2VydFRvcExldmVsRG9t
YWluUXVlcnkgPSAiSU5TRVJUIElOVE8gVG9wTGV2ZWxEb21haW5zIFZBTFVFUyAoCiBjb25zdGV4
cHIgYXV0byBkb21haW5JREZyb21TdHJpbmdRdWVyeSA9ICJTRUxFQ1QgZG9tYWluSUQgRlJPTSBP
YnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwogY29uc3RleHBy
IGF1dG8gc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zUXVlcnkgPSAiSU5TRVJUIElO
VE8gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIChkb21haW5JRCwgdG9wTGV2ZWxE
b21haW5JRCkgIgogICAgICJTRUxFQ1QgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMg
V0hFUkUgcmVnaXN0cmFibGVEb21haW4gPT0gPyJfczsKK2NvbnN0ZXhwciBhdXRvIHN0b3JhZ2VB
Y2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNF
TEVDVCAxIEZST00gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFp
bklEID0gPyAiCisiQU5EIHRvcExldmVsRG9tYWluSUQgPSAoU0VMRUNUIGRvbWFpbklEIEZST00g
T2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPykpIl9zOwogY29uc3Rl
eHByIGF1dG8gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1F1ZXJ5ID0gIklOU0VSVCBJTlRPIFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gKHNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEKSBTRUxF
Q1QgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21h
aW4gPT0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9FeGlz
dHNRdWVyeSA9ICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzVG8gV0hFUkUgc291cmNlRG9tYWluSUQgPSA/ICIKICAgICAiQU5EIHRvRG9tYWluSUQg
PSAoU0VMRUNUIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxl
RG9tYWluID0gPykpIl9zOwpAQCAtMTAwLDYgKzEwMiw3IEBAIGNvbnN0ZXhwciBhdXRvIHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbUV4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNF
TEVDCiBjb25zdGV4cHIgYXV0byBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uUXVlcnkgPSAiVVBE
QVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaGFkVXNlckludGVyYWN0aW9uID0gPywgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUgPSA/ICIKICAgICAiV0hFUkUgcmVnaXN0cmFibGVEb21haW4g
PSA/Il9zOwogY29uc3RleHByIGF1dG8gdXBkYXRlTGFzdFNlZW5RdWVyeSA9ICJVUERBVEUgT2Jz
ZXJ2ZWREb21haW5zIFNFVCBsYXN0U2VlbiA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/
Il9zOworY29uc3RleHByIGF1dG8gdXBkYXRlRGF0YVJlY29yZHNSZW1vdmVkUXVlcnkgPSAiVVBE
QVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZGF0YVJlY29yZHNSZW1vdmVkID0gPyBXSEVSRSByZWdp
c3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byB1cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gPyBX
SEVSRSByZWdpc3RyYWJsZURvbWFpbiA9ID8iX3M7CiBjb25zdGV4cHIgYXV0byBpc1ByZXZhbGVu
dFJlc291cmNlUXVlcnkgPSAiU0VMRUNUIGlzUHJldmFsZW50IEZST00gT2JzZXJ2ZWREb21haW5z
IFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHVwZGF0ZVZl
cnlQcmV2YWxlbnRSZXNvdXJjZVF1ZXJ5ID0gIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlz
VmVyeVByZXZhbGVudCA9ID8gV0hFUkUgcmVnaXN0cmFibGVEb21haW4gPSA/Il9zOwpAQCAtMTE1
LDcgKzExOCwyMSBAQCBjb25zdGV4cHIgYXV0byBjcmVhdGVPYnNlcnZlZERvbWFpbiA9ICJDUkVB
VEUgVEFCTEUgT2JzZXJ2ZWREb21haW5zICgiCiAgICAgImhhZFVzZXJJbnRlcmFjdGlvbiBJTlRF
R0VSIE5PVCBOVUxMLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSBSRUFMIE5PVCBOVUxM
LCBncmFuZGZhdGhlcmVkIElOVEVHRVIgTk9UIE5VTEwsICIKICAgICAiaXNQcmV2YWxlbnQgSU5U
RUdFUiBOT1QgTlVMTCwgaXNWZXJ5UHJldmFsZW50IElOVEVHRVIgTk9UIE5VTEwsIGRhdGFSZWNv
cmRzUmVtb3ZlZCBJTlRFR0VSIE5PVCBOVUxMLCIKICAgICAidGltZXNBY2Nlc3NlZEFzRmlyc3RQ
YXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uIElOVEVHRVIgTk9UIE5VTEwsIHRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgSU5URUdFUiBOT1QgTlVMTCk7Il9zOwot
ICAgIAorCitlbnVtIHsKKyAgICBEb21haW5JREluZGV4LAorICAgIFJlZ2lzdHJhYmxlRG9tYWlu
SW5kZXgsCisgICAgTGFzdFNlZW5JbmRleCwKKyAgICBIYWRVc2VySW50ZXJhY3Rpb25JbmRleCwK
KyAgICBNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4LAorICAgIEdyYW5kZmF0aGVy
ZWRJbmRleCwKKyAgICBJc1ByZXZhbGVudEluZGV4LAorICAgIElzVmVyeVByZXZhbGVudEluZGV4
LAorICAgIERhdGFSZWNvcmRzUmVtb3ZlZEluZGV4LAorICAgIFRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbkluZGV4LAorICAgIFRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUElJbmRleAorfTsKKwogY29uc3RleHByIGF1dG8gY3Jl
YXRlVG9wTGV2ZWxEb21haW5zID0gIkNSRUFURSBUQUJMRSBUb3BMZXZlbERvbWFpbnMgKCIKICAg
ICAidG9wTGV2ZWxEb21haW5JRCBJTlRFR0VSIFBSSU1BUlkgS0VZLCBDT05TVFJBSU5UIGZrRG9t
YWluSUQgRk9SRUlHTiBLRVkodG9wTGV2ZWxEb21haW5JRCkgIgogICAgICJSRUZFUkVOQ0VTIE9i
c2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpOyJfczsKQEAgLTE2OCw2
ICsxODUsNyBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzbwogICAgICwgbV9pbnNlcnRUb3BMZXZl
bERvbWFpblN0YXRlbWVudChtX2RhdGFiYXNlLCBpbnNlcnRUb3BMZXZlbERvbWFpblF1ZXJ5KQog
ICAgICwgbV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZG9tYWluSURG
cm9tU3RyaW5nUXVlcnkpCiAgICAgLCBtX3N0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlu
c1N0YXRlbWVudChtX2RhdGFiYXNlLCBzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNR
dWVyeSkKKyAgICAsIG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zRXhpc3RzU3Rh
dGVtZW50KG1fZGF0YWJhc2UsIHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc0V4aXN0
c1F1ZXJ5KQogICAgICwgbV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKG1fZGF0YWJhc2UsIHRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9RdWVyeSkKICAgICAsIG1fdG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUb0V4aXN0cyhtX2RhdGFiYXNlLCB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3Rz
UXVlcnkpCiAgICAgLCBtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbShtX2RhdGFiYXNlLCB0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21RdWVyeSkKQEAgLTE4NCw2ICsyMDIsNyBAQCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUoV2ViUmVzbwogICAgICwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b21FeGlzdHMobV9kYXRhYmFzZSwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tRXhpc3Rz
UXVlcnkpCiAgICAgLCBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9kYXRh
YmFzZSwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblF1ZXJ5KQogICAgICwgbV91cGRhdGVMYXN0
U2VlblN0YXRlbWVudChtX2RhdGFiYXNlLCB1cGRhdGVMYXN0U2VlblF1ZXJ5KQorICAgICwgbV91
cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdXBkYXRlRGF0YVJl
Y29yZHNSZW1vdmVkUXVlcnkpCiAgICAgLCBtX3VwZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVt
ZW50KG1fZGF0YWJhc2UsIHVwZGF0ZVByZXZhbGVudFJlc291cmNlUXVlcnkpCiAgICAgLCBtX2lz
UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQobV9kYXRhYmFzZSwgaXNQcmV2YWxlbnRSZXNvdXJj
ZVF1ZXJ5KQogICAgICwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQobV9k
YXRhYmFzZSwgdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlUXVlcnkpCkBAIC0zMDksNiArMzI4
LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJlcGFyZVN0
YXRlbWVudHMoKQogICAgICAgICB8fCBtX2luc2VydFRvcExldmVsRG9tYWluU3RhdGVtZW50LnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9kb21haW5JREZyb21TdHJpbmdTdGF0
ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3N0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zRXhpc3RzU3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV90b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV90b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvRXhpc3RzLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV90
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20ucHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMzIy
LDYgKzM0Miw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBy
ZXBhcmVTdGF0ZW1lbnRzKCkKICAgICAgICAgfHwgbV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c0Zyb20ucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbUV4aXN0cy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8
IG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAg
ICB8fCBtX3VwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LCiAgICAgICAgIHx8IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fdXBkYXRlUHJldmFsZW50UmVzb3Vy
Y2VTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX2lzUHJldmFs
ZW50UmVzb3VyY2VTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMzQ2LDI3ICsz
NjcsMjkgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0
T2JzZXJ2ZWREb21haW4oY29uc3QgUmVzb3VyY2VMb2EKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQoY29uZmlybURvbWFpbkRv
ZXNOb3RFeGlzdChsb2FkU3RhdGlzdGljcy5yZWdpc3RyYWJsZURvbWFpbikpOwotI2VuZGlmCisg
ICAgaWYgKGRvbWFpbklEKGxvYWRTdGF0aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWluKSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydE9ic2VydmVkRG9tYWluIGNhbiBvbmx5
IGJlIGNhbGxlZCBvbiBkb21haW5zIG5vdCBpbiB0aGUgZGF0YWJhc2UuIik7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAg
aWYgKG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZFRleHQoMSwgbG9hZFN0YXRp
c3RpY3MucmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICB8
fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmREb3VibGUoMiwgbG9hZFN0YXRp
c3RpY3MubGFzdFNlZW4uc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KDMsIGxv
YWRTdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8
IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZERvdWJsZSg0LCBsb2FkU3RhdGlz
dGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3Rh
dGVtZW50LmJpbmRJbnQoNSwgbG9hZFN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCkgIT0gU1FMSVRF
X09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludCg2
LCBsb2FkU3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KDcsIGxvYWRTdGF0
aXN0aWNzLmlzVmVyeVByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwg
bV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KDgsIGxvYWRTdGF0aXN0aWNz
LmRhdGFSZWNvcmRzUmVtb3ZlZCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1faW5zZXJ0T2Jz
ZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludCg5LCBsb2FkU3RhdGlzdGljcy50aW1lc0FjY2Vz
c2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24pICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoMTAsIGxvYWRTdGF0
aXN0aWNzLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkpICE9
IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0
T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMi
LCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICBpZiAobV9pbnNlcnRPYnNl
cnZlZERvbWFpblN0YXRlbWVudC5iaW5kVGV4dChSZWdpc3RyYWJsZURvbWFpbkluZGV4LCBsb2Fk
U3RhdGlzdGljcy5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZERvdWJsZShMYXN0U2Vl
bkluZGV4LCBsb2FkU3RhdGlzdGljcy5sYXN0U2Vlbi5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVl
KCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVt
ZW50LmJpbmRJbnQoSGFkVXNlckludGVyYWN0aW9uSW5kZXgsIGxvYWRTdGF0aXN0aWNzLmhhZFVz
ZXJJbnRlcmFjdGlvbikgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWRE
b21haW5TdGF0ZW1lbnQuYmluZERvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUlu
ZGV4LCBsb2FkU3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRz
U2luY2VFcG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9i
c2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoR3JhbmRmYXRoZXJlZEluZGV4LCBsb2FkU3Rh
dGlzdGljcy5ncmFuZGZhdGhlcmVkKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRP
YnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KElzUHJldmFsZW50SW5kZXgsIGxvYWRTdGF0
aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2lu
c2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgs
IGxvYWRTdGF0aXN0aWNzLmlzVmVyeVByZXZhbGVudFJlc291cmNlKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KERhdGFSZWNv
cmRzUmVtb3ZlZEluZGV4LCBsb2FkU3RhdGlzdGljcy5kYXRhUmVjb3Jkc1JlbW92ZWQpICE9IFNR
TElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJ
bnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uSW5kZXgsIGxv
YWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlv
bikgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1l
bnQuYmluZEludChUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJ
SW5kZXgsIGxvYWRTdGF0aXN0aWNzLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3Jh
Z2VBY2Nlc3NBUEkpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aW5zZXJ0T2JzZXJ2ZWREb21haW4gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3Nh
Z2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElU
RV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERvbWFpbiBmYWls
ZWQgdG8gY29tbWl0LCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRPYnNlcnZlZERv
bWFpbiBmYWlsZWQgdG8gY29tbWl0LCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM4Nyw3ICs0MTAsNyBAQCBib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWxhdGlvbnNoaXBFeGlzdHMo
V2ViQ29yZTo6U1FMaXRlU3RhdAogICAgIGlmIChzdGF0ZW1lbnQuYmluZEludCgxLCAqZmlyc3RE
b21haW5JRCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHN0YXRlbWVudC5iaW5kVGV4dCgyLCBz
ZWNvbmREb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzdGF0ZW1lbnQu
c3RlcCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6Om1faW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwU3RhdGVtZW50IGZhaWxlZCB0byBiaW5kLCBl
cnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptX2luc2VydERvbWFpblJl
bGF0aW9uc2hpcFN0YXRlbWVudCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2
YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00MDYsNyAr
NDI5LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0
RG9tYWluUmVsYXRpb25zaGlwKFdlYkNvcmU6OlNRTGkKICAgICBpZiAoc3RhdGVtZW50LmJpbmRJ
bnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzdGF0ZW1lbnQuYmluZFRl
eHQoMiwgdG9wRnJhbWUuc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBzdGF0ZW1l
bnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjptX2luc2VydERvbWFpblJlbGF0aW9uc2hpcFN0YXRlbWVudCBmYWlsZWQgdG8gYmlu
ZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklE
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV9pbnNlcnREb21h
aW5SZWxhdGlvbnNoaXBTdGF0ZW1lbnQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7
cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNDE3
LDMwICs0NDAsNiBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpp
bnNlcnREb21haW5SZWxhdGlvbnNoaXAoV2ViQ29yZTo6U1FMaQogICAgIHJldHVybiB0cnVlOwog
fQogCi0jaWZuZGVmIE5ERUJVRwotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y29uZmlybURvbWFpbkRvZXNOb3RFeGlzdChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluKSBjb25zdAotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAg
aWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJp
bmcoKSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
Ojpjb25maXJtRG9tYWluRG9lc05vdEV4aXN0IGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdl
OiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
ICAgICAKLSAgICBpZiAobV9kb21haW5JREZyb21TdHJpbmdTdGF0ZW1lbnQuc3RlcCgpID09IFNR
TElURV9ST1cpIHsKLSAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gbV9kb21haW5JREZyb21TdHJp
bmdTdGF0ZW1lbnQucmVzZXQoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwg
cmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGludCByZXNldFJlc3VsdCA9IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LnJl
c2V0KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FM
SVRFX09LKTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiBPcHRpb25hbDx1
bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklEKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CkBAIC00NDgsNyArNDQ3LDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChjb25zdCBSZWdpc3Ry
YWIKICAgICB1bnNpZ25lZCBkb21haW5JRCA9IDA7CiAKICAgICBpZiAobV9kb21haW5JREZyb21T
dHJpbmdTdGF0ZW1lbnQuYmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklERnJvbVN0cmlu
ZyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFp
bklERnJvbVN0cmluZyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgfQogICAgIApAQCAtNDc0LDI2ICs0NzMsNDAgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhjb25zdCBSZXNv
dXIKICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluSUQpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBmb3IgKGF1dG8mIHRvcEZyYW1lRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKQotICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNo
aXAobV9zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQsIHJlZ2lzdHJh
YmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pOworICAgIGZvciAoYXV0byYgdG9w
RnJhbWVEb21haW4gOiBsb2FkU3RhdGlzdGljcy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURv
bWFpbnMpIHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV9zdG9yYWdlQWNjZXNz
VW5kZXJUb3BGcmFtZURvbWFpbnNFeGlzdHNTdGF0ZW1lbnQsIHJlZ2lzdHJhYmxlRG9tYWluSUQu
dmFsdWUoKSwgdG9wRnJhbWVEb21haW4pKQorICAgICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRp
b25zaGlwKG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50LCByZWdp
c3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKTsKKyAgICB9CiAKLSAgICBm
b3IgKGF1dG8mIHRvRG9tYWluIDogbG9hZFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUbykKLSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fdG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCB0b0RvbWFpbik7CisgICAg
Zm9yIChhdXRvJiB0b0RvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG8pIHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV90b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvRXhpc3RzLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvRG9tYWlu
KSkKKyAgICAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3RvcEZyYW1lVW5pcXVl
UmVkaXJlY3RzVG8sIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9Eb21haW4pOworICAg
IH0KICAgICAKLSAgICBmb3IgKGF1dG8mIGZyb21Eb21haW4gOiBsb2FkU3RhdGlzdGljcy50b3BG
cmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pCi0gICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hp
cChtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSwgcmVnaXN0cmFibGVEb21haW5JRC52YWx1
ZSgpLCBmcm9tRG9tYWluKTsKKyAgICBmb3IgKGF1dG8mIGZyb21Eb21haW4gOiBsb2FkU3RhdGlz
dGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pIHsKKyAgICAgICAgaWYgKCFyZWxhdGlv
bnNoaXBFeGlzdHMobV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb21FeGlzdHMsIHJlZ2lzdHJh
YmxlRG9tYWluSUQudmFsdWUoKSwgZnJvbURvbWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21h
aW5SZWxhdGlvbnNoaXAobV90b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHJlZ2lzdHJhYmxl
RG9tYWluSUQudmFsdWUoKSwgZnJvbURvbWFpbik7CisgICAgfQogICAgIAotICAgIGZvciAoYXV0
byYgdG9wRnJhbWVEb21haW4gOiBsb2FkU3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVE
b21haW5zKQotICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW5zLCByZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9t
YWluKTsKKyAgICBmb3IgKGF1dG8mIHRvcEZyYW1lRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucykgeworICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcEV4
aXN0cyhtX3N1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cywgcmVnaXN0cmFibGVEb21h
aW5JRC52YWx1ZSgpLCB0b3BGcmFtZURvbWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21haW5S
ZWxhdGlvbnNoaXAobV9zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zLCByZWdpc3RyYWJsZURv
bWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKTsKKyAgICB9CiAgICAgCi0gICAgZm9yIChh
dXRvJiB0b3BGcmFtZURvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMpCi0gICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9w
RnJhbWVEb21haW4pOworICAgIGZvciAoYXV0byYgdG9wRnJhbWVEb21haW4gOiBsb2FkU3RhdGlz
dGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKSB7CisgICAgICAgIGlmICghcmVs
YXRpb25zaGlwRXhpc3RzKG1fc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluRXhpc3RzLCBy
ZWdpc3RyYWJsZURvbWFpbklELnZhbHVlKCksIHRvcEZyYW1lRG9tYWluKSkKKyAgICAgICAgICAg
IGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFp
bnMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUoKSwgdG9wRnJhbWVEb21haW4pOworICAgIH0K
ICAgICAKLSAgICBmb3IgKGF1dG8mIHRvRG9tYWluIDogbG9hZFN0YXRpc3RpY3Muc3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUbykKLSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1f
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgp
LCB0b0RvbWFpbik7CisgICAgZm9yIChhdXRvJiB0b0RvbWFpbiA6IGxvYWRTdGF0aXN0aWNzLnN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pIHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBF
eGlzdHMobV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzLCByZWdpc3RyYWJsZURv
bWFpbklELnZhbHVlKCksIHRvRG9tYWluKSkKKyAgICAgICAgICAgIGluc2VydERvbWFpblJlbGF0
aW9uc2hpcChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIHJlZ2lzdHJhYmxlRG9tYWlu
SUQudmFsdWUoKSwgdG9Eb21haW4pOworICAgIH0KICAgICAKLSAgICBmb3IgKGF1dG8mIGZyb21E
b21haW4gOiBsb2FkU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pCi0g
ICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbSwgcmVnaXN0cmFibGVEb21haW5JRC52YWx1ZSgpLCBmcm9tRG9tYWluKTsKKyAgICBm
b3IgKGF1dG8mIGZyb21Eb21haW4gOiBsb2FkU3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c0Zyb20pIHsKKyAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBFeGlzdHMobV9zdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21FeGlzdHMsIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUo
KSwgZnJvbURvbWFpbikpCisgICAgICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9z
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20sIHJlZ2lzdHJhYmxlRG9tYWluSUQudmFsdWUo
KSwgZnJvbURvbWFpbik7CisgICAgfQogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpwb3B1bGF0ZUZyb21NZW1vcnlTdG9yZShjb25zdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUmIG1lbW9yeVN0b3JlKQpAQCAtNTEzLDYgKzUyNiw3MyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwb3B1bGF0ZUZyb21NZW1v
cnlTdG9yZShjb25zdCBSZXNvdXJjZQogICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBz
KHN0YXRpc3RpYy52YWx1ZSk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYgY3VycmVudCwgY29uc3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgb3RoZXIpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisKKyAgICBhdXRvIGN1cnJlbnRSZWdpc3RyYWJsZURvbWFpbiA9IGN1cnJlbnQu
Z2V0Q29sdW1uVGV4dChSZWdpc3RyYWJsZURvbWFpbkluZGV4KTsKKyAgICBhdXRvIGN1cnJlbnRM
YXN0U2VlbiA9IGN1cnJlbnQuZ2V0Q29sdW1uRG91YmxlKExhc3RTZWVuSW5kZXgpOworICAgIGF1
dG8gY3VycmVudE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24gPSBjdXJyZW50LmdldENvbHVtbkRv
dWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUluZGV4KTsKKyAgICBib29sIGN1cnJl
bnRHcmFuZGZhdGhlcmVkID0gY3VycmVudC5nZXRDb2x1bW5JbnQoR3JhbmRmYXRoZXJlZEluZGV4
KTsKKyAgICBib29sIGN1cnJlbnRJc1ByZXZhbGVudCA9IGN1cnJlbnQuZ2V0Q29sdW1uSW50KElz
UHJldmFsZW50SW5kZXgpOworICAgIGJvb2wgY3VycmVudElzVmVyeVByZXZhbGVudCA9IGN1cnJl
bnQuZ2V0Q29sdW1uSW50KElzVmVyeVByZXZhbGVudEluZGV4KTsKKyAgICB1bnNpZ25lZCBjdXJy
ZW50RGF0YVJlY29yZHNSZW1vdmVkID0gY3VycmVudC5nZXRDb2x1bW5JbnQoRGF0YVJlY29yZHNS
ZW1vdmVkSW5kZXgpOworCisgICAgQVNTRVJUKGN1cnJlbnRSZWdpc3RyYWJsZURvbWFpbiA9PSBv
dGhlci5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSk7CisKKyAgICBpZiAoV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGN1cnJlbnRMYXN0U2VlbikgPCBvdGhlci5sYXN0U2VlbikKKyAgICAgICAg
dXBkYXRlTGFzdFNlZW4ob3RoZXIucmVnaXN0cmFibGVEb21haW4sIG90aGVyLmxhc3RTZWVuKTsK
KworICAgIGlmICghb3RoZXIuaGFkVXNlckludGVyYWN0aW9uKSB7CisgICAgICAgIC8vIElmIG1v
c3QgcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gdGltZSBoYXMgYmVlbiByZXNldCBkbyBzbyBoZXJl
IHRvby4KKyAgICAgICAgaWYgKCFvdGhlci5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkK
KyAgICAgICAgICAgIHNldFVzZXJJbnRlcmFjdGlvbihvdGhlci5yZWdpc3RyYWJsZURvbWFpbiwg
ZmFsc2UsIHsgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHNldFVzZXJJbnRlcmFjdGlvbihvdGhl
ci5yZWdpc3RyYWJsZURvbWFpbiwgdHJ1ZSwgc3RkOjptYXgoV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKGN1cnJlbnRNb3N0UmVjZW50VXNlckludGVyYWN0aW9uKSwgb3RoZXIubW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUpKTsKKworICAgIGlmIChvdGhlci5ncmFuZGZhdGhlcmVkICYmICFj
dXJyZW50R3JhbmRmYXRoZXJlZCkKKyAgICAgICAgc2V0R3JhbmRmYXRoZXJlZChvdGhlci5yZWdp
c3RyYWJsZURvbWFpbiwgdHJ1ZSk7CisgICAgaWYgKG90aGVyLmlzUHJldmFsZW50UmVzb3VyY2Ug
JiYgIWN1cnJlbnRJc1ByZXZhbGVudCkKKyAgICAgICAgc2V0UHJldmFsZW50UmVzb3VyY2Uob3Ro
ZXIucmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChvdGhlci5pc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZSAmJiAhY3VycmVudElzVmVyeVByZXZhbGVudCkKKyAgICAgICAgc2V0VmVyeVByZXZhbGVu
dFJlc291cmNlKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAob3RoZXIuZGF0YVJl
Y29yZHNSZW1vdmVkID4gY3VycmVudERhdGFSZWNvcmRzUmVtb3ZlZCkKKyAgICAgICAgdXBkYXRl
RGF0YVJlY29yZHNSZW1vdmVkKG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluLCBvdGhlci5kYXRhUmVj
b3Jkc1JlbW92ZWQpOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjptZXJnZVN0YXRpc3RpYyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0
aWMpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBTUUxpdGVTdGF0
ZW1lbnQgZmV0Y2hPbGRTdGF0aXN0aWNEYXRhKG1fZGF0YWJhc2UsICJTRUxFQ1QgKiBGUk9NIE9i
c2VydmVkRG9tYWlucyB3aGVyZSByZWdpc3RyYWJsZURvbWFpbiA9ID8iKTsKKyAgICBpZiAoZmV0
Y2hPbGRTdGF0aXN0aWNEYXRhLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgZmV0
Y2hPbGRTdGF0aXN0aWNEYXRhLmJpbmRUZXh0KDEsIHN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGZldGNoT2xkU3RhdGlzdGljRGF0
YS5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6bWVyZ2VTdGF0aXN0aWMuIFN0YXRlbWVudCBmYWlsZWQgdG8gYmluZCBvciBkb21haW4g
d2FzIG5vdCBmb3VuZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtZXJnZShmZXRjaE9sZFN0YXRpc3RpY0RhdGEsIHN0
YXRpc3RpYyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Om1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0
aWNzKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgZm9yIChhdXRv
JiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKSB7CisgICAgICAgIGlmICghZG9tYWluSUQoc3RhdGlz
dGljLnJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgIGluc2VydE9ic2VydmVkRG9tYWlu
KHN0YXRpc3RpYyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lcmdlU3RhdGlzdGljKHN0
YXRpc3RpYyk7CisgICAgfQorCisgICAgLy8gTWFrZSBhIHNlcGFyYXRlIHBhc3MgZm9yIGludGVy
LWRvbWFpbiByZWxhdGlvbnNoaXBzIHNvIHdlCisgICAgLy8gY2FuIHJlZmVyIHRvIHRoZSBPYnNl
cnZlZERvbWFpbiB0YWJsZSBlbnRyaWVzLgorICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogc3Rh
dGlzdGljcykKKyAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhzdGF0aXN0aWMpOwor
fQorCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjYWxjdWxhdGVB
bmRTdWJtaXRUZWxlbWV0cnkoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwpAQCAtNTQxLDcgKzYyMSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zCiAgICAgU1FM
aXRlU3RhdGVtZW50IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCBtYWtlU3Ry
aW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBkYXRhUmVjb3Jkc1JlbW92ZWQgPSBkYXRh
UmVjb3Jkc1JlbW92ZWQgKyAxIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluIElOICgiLCBkb21haW5z
VG9TdHJpbmcoZG9tYWlucyksICIpIikpOwogICAgIGlmIChkb21haW5zVG9VcGRhdGVTdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBkb21haW5zVG9VcGRhdGVTdGF0
ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjppbmNyZW1lbnRTdGF0aXN0aWNzRm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1l
c3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY3JlbWVudFN0YXRpc3RpY3NGb3JE
b21haW5zIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogfQpAQCAtNTYxLDcgKzY0MSw3IEBAIHVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zCiAgICAgU1FM
aXRlU3RhdGVtZW50IGZpbmRTdWJyZXNvdXJjZXMobV9kYXRhYmFzZSwgIlNFTEVDVCBTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20uZnJvbURvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tIElOTkVSIEpPSU4gT2JzZXJ2ZWREb21haW5zIE9OIE9ic2VydmVkRG9t
YWlucy5kb21haW5JRCA9IFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5mcm9tRG9tYWlu
SUQgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8gQU5EIE9ic2VydmVkRG9tYWlucy5pc1By
ZXZhbGVudCA9IDAiX3MpOwogICAgIGlmIChmaW5kU3VicmVzb3VyY2VzLnByZXBhcmUoKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgZmluZFN1YnJlc291cmNlcy5iaW5kSW50KDEsIHByaW1hcnlE
b21haW5JRCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1Ro
aXNEb21haW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNE
b21haW4gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTc2LDcgKzY1Niw3IEBAIHVuc2lnbmVkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnRE
b21haW5zCiAgICAgU1FMaXRlU3RhdGVtZW50IGZpbmRUb3BGcmFtZXMobV9kYXRhYmFzZSwgIlNF
TEVDVCBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20uZnJvbURvbWFpbklEIGZyb20gVG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tIElOTkVSIEpPSU4gT2JzZXJ2ZWREb21haW5zIE9OIE9ic2Vy
dmVkRG9tYWlucy5kb21haW5JRCA9IFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbS5mcm9tRG9t
YWluSUQgV0hFUkUgdGFyZ2V0RG9tYWluSUQgPSA/IEFORCBPYnNlcnZlZERvbWFpbnMuaXNQcmV2
YWxlbnQgPSAwIl9zKTsKICAgICBpZiAoZmluZFRvcEZyYW1lcy5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LCiAgICAgICAgIHx8IGZpbmRUb3BGcmFtZXMuYmluZEludCgxLCBwcmltYXJ5RG9tYWluSUQp
ICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVj
dXJzaXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWluc1RoYXRSZWRpcmVjdGVkVG9UaGlzRG9tYWlu
IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vz
c2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVjdXJz
aXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWluc1RoYXRSZWRpcmVjdGVkVG9UaGlzRG9tYWluIGZh
aWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KQEAgLTYyOSw3ICs3MDksNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbAog
ICAgIFNRTGl0ZVN0YXRlbWVudCBtYXJrUHJldmFsZW50U3RhdGVtZW50KG1fZGF0YWJhc2UsIG1h
a2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gMSBXSEVS
RSBkb21haW5JRCBJTiAoIiwgYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JSYW5nZTxTdGRTZXQ8dW5z
aWduZWQ+OjppdGVyYXRvcj4ocHJldmFsZW50RHVlVG9SZWRpcmVjdC5iZWdpbigpLCBwcmV2YWxl
bnREdWVUb1JlZGlyZWN0LmVuZCgpKSksICIpIikpOwogICAgIGlmIChtYXJrUHJldmFsZW50U3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbWFya1ByZXZhbGVudFN0
YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50IGZh
aWxlZCB0byBleGVjdXRlLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudCBmYWlsZWQgdG8gZXhl
Y3V0ZSwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQpAQCAt
Nzc0LDEyICs4NTQsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJgogCiAgICAgc3dpdGNoIChj
b29raWVUcmVhdG1lbnRGb3JPcmlnaW4oc3ViRnJhbWVEb21haW4pKSB7CiAgICAgY2FzZSBDb29r
aWVUcmVhdG1lbnRSZXN1bHQ6OkJsb2NrQW5kUHVyZ2U6IHsKLSAgICAgICAgUkVMRUFTRV9MT0df
SU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIElUUERlYnVnLCAiQ2Fubm90IGdyYW50IHN0
b3JhZ2UgYWNjZXNzIHRvICV7cHVibGljfXMgc2luY2UgaXRzIGNvb2tpZXMgYXJlIGJsb2NrZWQg
aW4gdGhpcmQtcGFydHkgY29udGV4dHMgYW5kIGl0IGhhcyBub3QgcmVjZWl2ZWQgdXNlciBpbnRl
cmFjdGlvbiBhcyBmaXJzdC1wYXJ0eS4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVk
KCksIElUUERlYnVnLCAiQ2Fubm90IGdyYW50IHN0b3JhZ2UgYWNjZXNzIHRvICV7cHJpdmF0ZX1z
IHNpbmNlIGl0cyBjb29raWVzIGFyZSBibG9ja2VkIGluIHRoaXJkLXBhcnR5IGNvbnRleHRzIGFu
ZCBpdCBoYXMgbm90IHJlY2VpdmVkIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmlyc3QtcGFydHkuIiwg
c3ViRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIENvb2tpZVRyZWF0bWVudFJlc3VsdDo6
QmxvY2tBbmRLZWVwOiB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5n
RW5hYmxlZCgpLCBJVFBEZWJ1ZywgIk5vIG5lZWQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8g
JXtwdWJsaWN9cyBzaW5jZSBpdHMgY29va2llcyBhcmUgbm90IGJsb2NrZWQgaW4gdGhpcmQtcGFy
dHkgY29udGV4dHMuIiwgc3ViRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dnaW5nRW5hYmxlZCgpLCBJVFBEZWJ1
ZywgIk5vIG5lZWQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwcml2YXRlfXMgc2luY2Ug
aXRzIGNvb2tpZXMgYXJlIG5vdCBibG9ja2VkIGluIHRoaXJkLXBhcnR5IGNvbnRleHRzLiIsIHN1
YkZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKQEAgLTc5MCwxOSArODcwLDE5IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYK
IAogICAgIGF1dG8gdXNlcldhc1Byb21wdGVkRWFybGllciA9IGhhc1VzZXJHcmFudGVkU3RvcmFn
ZUFjY2Vzc1Rocm91Z2hQcm9tcHQoc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0b3BGcmFtZURvbWFp
bik7CiAgICAgaWYgKHVzZXJXYXNQcm9tcHRlZEVhcmxpZXIgPT0gU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObykgewotICAgICAgICBSRUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2lu
Z0VuYWJsZWQoKSwgSVRQRGVidWcsICJBYm91dCB0byBhc2sgdGhlIHVzZXIgd2hldGhlciB0aGV5
IHdhbnQgdG8gZ3JhbnQgc3RvcmFnZSBhY2Nlc3MgdG8gJXtwdWJsaWN9cyB1bmRlciAle3B1Ymxp
Y31zIG9yIG5vdC4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0b3BG
cmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
SU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIElUUERlYnVnLCAiQWJvdXQgdG8gYXNrIHRo
ZSB1c2VyIHdoZXRoZXIgdGhleSB3YW50IHRvIGdyYW50IHN0b3JhZ2UgYWNjZXNzIHRvICV7cHJp
dmF0ZX1zIHVuZGVyICV7cHJpdmF0ZX1zIG9yIG5vdC4iLCBzdWJGcmFtZURvbWFpbi5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCB0b3BGcmFtZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0YXR1czo6UmVxdWlyZXNV
c2VyUHJvbXB0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh1c2VyV2FzUHJv
bXB0ZWRFYXJsaWVyID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzKQotICAgICAg
ICBSRUxFQVNFX0xPR19JTkZPX0lGKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSwgSVRQRGVidWcsICJT
dG9yYWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCB0byAle3B1YmxpY31zIHVuZGVyICV7cHVibGljfXMu
Iiwgc3ViRnJhbWVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdG9wRnJhbWVEb21haW4u
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVi
dWdMb2dnaW5nRW5hYmxlZCgpLCBJVFBEZWJ1ZywgIlN0b3JhZ2UgYWNjZXNzIHdhcyBncmFudGVk
IHRvICV7cHJpdmF0ZX1zIHVuZGVyICV7cHJpdmF0ZX1zLiIsIHN1YkZyYW1lRG9tYWluLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIHRvcEZyYW1lRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCiAgICAgU1FMaXRlU3RhdGVtZW50IGluY3JlbWVudFN0b3JhZ2VBY2Nlc3MobV9kYXRhYmFz
ZSwgIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlE
dWVUb1N0b3JhZ2VBY2Nlc3NBUEkgPSB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9y
YWdlQWNjZXNzQVBJICsgMSBXSEVSRSBkb21haW5JRCA9ID8iKTsKICAgICBpZiAoaW5jcmVtZW50
U3RvcmFnZUFjY2Vzcy5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGluY3JlbWVu
dFN0b3JhZ2VBY2Nlc3MuYmluZEludCgxLCBzdWJGcmFtZVN0YXR1cy5zZWNvbmQpICE9IFNRTElU
RV9PSwogICAgICAgICB8fCBpbmNyZW1lbnRTdG9yYWdlQWNjZXNzLnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklE
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1z
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODI1LDcgKzkwNSw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoRG9tYWluCiAgICAgaWYgKGNvb2tpZVRyZWF0bWVudEZvck9yaWdpbihk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpICE9IENvb2tpZVRyZWF0bWVudFJlc3VsdDo6QWxs
b3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lORk9fSUYoZGVidWdMb2dn
aW5nRW5hYmxlZCgpLCBJVFBEZWJ1ZywgIltUZW1wb3JhcnkgY29tYmF0aWJpbGl0eSBmaXhdIFN0
b3JhZ2UgYWNjZXNzIHdhcyBncmFudGVkIGZvciAle3B1YmxpY31zIHVuZGVyIG9wZW5lciBwYWdl
IGZyb20gJXtwdWJsaWN9cywgd2l0aCB1c2VyIGludGVyYWN0aW9uIGluIHRoZSBvcGVuZWQgd2lu
ZG93LiIsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcy5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBvcGVuZXJEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0df
SU5GT19JRihkZWJ1Z0xvZ2dpbmdFbmFibGVkKCksIElUUERlYnVnLCAiW1RlbXBvcmFyeSBjb21i
YXRpYmlsaXR5IGZpeF0gU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgZm9yICV7cHJpdmF0ZX1z
IHVuZGVyIG9wZW5lciBwYWdlIGZyb20gJXtwcml2YXRlfXMsIHdpdGggdXNlciBpbnRlcmFjdGlv
biBpbiB0aGUgb3BlbmVkIHdpbmRvdy4iLCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Muc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgb3BlbmVyRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5l
clBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpIHsgfSk7CiB9CiAKQEAgLTg4Miw3ICs5NjIsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFuZGZhdGhlckRhdGFGb3JEb21haW5zKGNv
bnN0IEhhc2hTZQogICAgIFNRTGl0ZVN0YXRlbWVudCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgbWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZ3JhbmRm
YXRoZXJlZCA9IDEgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gSU4gKCIsIGRvbWFpbnNUb1N0cmlu
Zyhkb21haW5zKSwgIikiKSk7CiAgICAgaWYgKGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudC5z
dGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1
YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFuZGZhdGhlckRhdGFGb3JEb21haW5zIGZhaWxlZCwg
ZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQpAQCAtOTA1LDcg
Kzk4NSw3IEBAIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmVuc3VyZVByZXZhbGVudFJlCiAgICAgICAgIGVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRlYnVnTWFudWFsUHJldmFsZW50UmVzb3Vy
Y2UoKSk7CiAgICAgICAgIHNldFByZXZhbGVudFJlc291cmNlKGRlYnVnTWFudWFsUHJldmFsZW50
UmVzb3VyY2UoKSwgUmVzb3VyY2VMb2FkUHJldmFsZW5jZTo6SGlnaCk7CiAgICAgICAgIHByaW1h
cnlEb21haW5zVG9CbG9jay51bmNoZWNrZWRBcHBlbmQoZGVidWdNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhJVFBEZWJ1ZywgIkRpZCBzZXQgJXtw
dWJsaWN9cyBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgZm9yIHRoZSBwdXJwb3NlcyBvZiBJVFAgRGVi
dWcgTW9kZS4iLCBkZWJ1Z01hbnVhbFByZXZhbGVudFJlc291cmNlKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oSVRQRGVidWcsICJEaWQgc2V0ICV7
cHJpdmF0ZX1zIGFzIHByZXZhbGVudCByZXNvdXJjZSBmb3IgdGhlIHB1cnBvc2VzIG9mIElUUCBE
ZWJ1ZyBNb2RlLiIsIGRlYnVnTWFudWFsUHJldmFsZW50UmVzb3VyY2UoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gcHJpbWFyeURvbWFpbnNUb0Jsb2NrOwpA
QCAtOTgzLDcgKzEwNjMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpzZXRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEbwogICAgICAgICB8fCBt
X21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmluZERvdWJsZSgyLCBtb3N0UmVj
ZW50SW50ZXJhY3Rpb24uc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sK
ICAgICAgICAgfHwgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uU3RhdGVtZW50LmJpbmRUZXh0
KDMsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldFVzZXJJbnRlcmFjdGlvbiwgZXJyb3Ig
bWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0VXNlckludGVyYWN0aW9uLCBl
cnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTEwMTEsNyArMTA5MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlCiAgICAgaWYg
KHJlbW92ZVN0b3JhZ2VBY2Nlc3MucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBy
ZW1vdmVTdG9yYWdlQWNjZXNzLmJpbmRJbnQoMSwgdGFyZ2V0UmVzdWx0LnNlY29uZCkgIT0gU1FM
SVRFX09LCiAgICAgICAgIHx8IHJlbW92ZVN0b3JhZ2VBY2Nlc3Muc3RlcCgpICE9IFNRTElURV9E
T05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpsb2dVc2VySW50ZXJh
Y3Rpb24gZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbiBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQpAQCAtMTAyMiw3ICsxMTAyLDcgQEAgYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0
aW9uKGNvbnN0IFJlZ2lzdHJhYmwKIAogICAgIGlmIChtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRl
bWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICB8
fCBtX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV9oYWRVc2VySW50ZXJhY3Rpb25T
dGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptX2hhZFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7
cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAKICAgICAgICAg
aW50IHJlc2V0UmVzdWx0ID0gbV9oYWRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucmVzZXQoKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXNldFJlc3VsdCwgcmVzZXRSZXN1bHQgPT0gU1FMSVRF
X09LKTsKQEAgLTEwNjEsNyArMTE0MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlCiAgICAg
aWYgKG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQuYmluZEludCgxLCAxKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgbV91cGRhdGVQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5i
aW5kVGV4dCgyLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICB8fCBtX3Vw
ZGF0ZVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bV91cGRhdGVQcmV2YWxlbnRSZXNv
dXJjZVN0YXRlbWVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBt
X2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQgZmFpbGVkLCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEwNzMsNyArMTE1Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlCiAgICAgICAgIGlmICht
X3VwZGF0ZVZlcnlQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNR
TElURV9PSwogICAgICAgICAgICAgfHwgbV91cGRhdGVWZXJ5UHJldmFsZW50UmVzb3VyY2VTdGF0
ZW1lbnQuYmluZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
ICAgIHx8IG1fdXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50LnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1f
dXBkYXRlVmVyeVByZXZhbGVudFJlc291cmNlU3RhdGVtZW50IGZhaWxlZCwgZXJyb3IgbWVzc2Fn
ZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1fdXBkYXRlVmVyeVByZXZhbGVudFJl
c291cmNlU3RhdGVtZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDk0LDcgKzExNzQs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXREb21haW5z
QXNQcmV2YWxlbnQoU3RkU2V0PHVuc2lnbmVkPgogICAgIFNRTGl0ZVN0YXRlbWVudCBkb21haW5z
VG9VcGRhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgbWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVk
RG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSAxIFdIRVJFIGRvbWFpbklEIElOICgiLCBidWlsZExp
c3QoV1RGOjpJdGVyYXRvclJhbmdlPFN0ZFNldDx1bnNpZ25lZD46Oml0ZXJhdG9yPihkb21haW5z
LmJlZ2luKCksIGRvbWFpbnMuZW5kKCkpKSwgIikiKSk7CiAgICAgaWYgKGRvbWFpbnNUb1VwZGF0
ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IGRvbWFpbnNUb1Vw
ZGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVudCBmYWlsZWQsIGVycm9yIG1l
c3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVudCBm
YWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTExOSw3ICsxMTk5LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6cHJlZGljYXRlVmFsdWVGb3JEb21haW4oV2ViQ29yZTo6U1FMaXQK
ICAgICAgICAgaW50IHJlc2V0UmVzdWx0ID0gcHJlZGljYXRlU3RhdGVtZW50LnJlc2V0KCk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQocmVzZXRSZXN1bHQsIHJlc2V0UmVzdWx0ID09IFNRTElURV9P
Syk7CiAKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZWRpY2F0ZVZhbHVl
Rm9yRG9tYWluIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpwcmVkaWNhdGVWYWx1ZUZvckRvbWFpbiBmYWlsZWQgdG8gYmluZCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTE3OCw3ICsxMjU4LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWIKICAgICAKICAgICBpZiAobV9jbGVhclByZXZhbGVudFJlc291
cmNlU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAg
ICAgICAgIHx8IG1fY2xlYXJQcmV2YWxlbnRSZXNvdXJjZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyUHJl
dmFsZW50UmVzb3VyY2UsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNsZWFyUHJldmFsZW50UmVzb3VyY2UsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTE5NCw5ICsxMjc0LDkgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZChjb25z
dCBSZWdpc3RyYWJsZURvbWEKICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3Ry
YWJsZURvbWFpbihkb21haW4pOwogICAgIAogICAgIGlmIChtX3VwZGF0ZUdyYW5kZmF0aGVyZWRT
dGF0ZW1lbnQuYmluZEludCgxLCB2YWx1ZSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IG1fdXBk
YXRlR3JhbmRmYXRoZXJlZFN0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9
IFNRTElURV9PSworICAgICAgICB8fCBtX3VwZGF0ZUdyYW5kZmF0aGVyZWRTdGF0ZW1lbnQuYmlu
ZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV91cGRh
dGVHcmFuZGZhdGhlcmVkU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZCBmYWlsZWQgdG8g
YmluZCwgZXJyb3IgbWVzc2FnZTogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lv
bklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0R3JhbmRm
YXRoZXJlZCBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg5LDcgKzEzNjksNyBAQCBzdGQ6OnBh
aXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OkFkZGVkUmVjb3JkLCB1bnNp
Z25lZD4gUmVzb3VyY2VMbwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAg
aWYgKG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50LmJpbmRUZXh0KDEsIGRvbWFpbi5zdHJp
bmcoKSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbiBmYWlsZWQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3Rh
dGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2
YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiB7IEFkZGVkUmVjb3JkOjpObywgMCB9Owog
ICAgIH0KQEAgLTEzMTYsNyArMTM5Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNsZWFyRGF0YWJhc2VDb250ZW50cygpCiAgICAgbV9kYXRhYmFzZS5jbGVh
ckFsbFRhYmxlcygpOwogCiAgICAgaWYgKCFjcmVhdGVTY2hlbWEoKSkgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Y2xlYXJEYXRhYmFzZUNvbnRlbnRzIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtw
dWJsaWN9cywgZGF0YWJhc2UgcGF0aDogJXtwdWJsaWN9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCksIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMgZmFpbGVkLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cywgZGF0YWJhc2UgcGF0aDogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTEzNDUsNyArMTQyNSw3IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpDb29raWVUcmVhdG1lbnRSZXN1bHQgUmVzb3VyY2VMb2FkU3RhdGlzdGljCiAgICAgU1FM
aXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIGlzUHJldmFsZW50LCBo
YWRVc2VySW50ZXJhY3Rpb24gRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFibGVE
b21haW4gPSA/Iik7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAg
ICAgICAgIHx8IHN0YXRlbWVudC5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElU
RV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklE
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29va2llVHJlYXRt
ZW50Rm9yT3JpZ2luIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjb29raWVUcmVhdG1lbnRGb3JPcmlnaW4gZmFpbGVkIHRvIGJpbmQsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKQEAgLTE0OTcs
NyArMTU3Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNs
ZWFyRXhwaXJlZFVzZXJJbnRlcmFjdGlvbnMoKQogCiAgICAgaWYgKGNsZWFyRXhwaXJlZEludGVy
YWN0aW9uLnN0ZXAoKSAhPSBTUUxJVEVfRE9ORQogICAgICAgICB8fCByZW1vdmVTdG9yYWdlQWNj
ZXNzLnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJF
eHBpcmVkVXNlckludGVyYWN0aW9ucyBzdGF0ZW1lbnQocykgZmFpbGVkIHRvIHN0ZXAsIGVycm9y
IG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyRXhwaXJlZFVzZXJJbnRlcmFjdGlvbnMgc3RhdGVt
ZW50KHMpIGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiB9CkBAIC0xNTE2LDcgKzE1OTYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckdyYW5kZmF0aGVyaW5nKFZlY3Rvcjx1bnNpZ25lZD4m
JgogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKGNsZWFyR3JhbmRmYXRoZXJpbmdTdGF0
ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpjbGVhckdyYW5kZmF0aGVyaW5nIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNz
YWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckdyYW5kZmF0aGVyaW5nIGZhaWxl
ZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9
CkBAIC0xNTk2LDcgKzE2NzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpCiAgICAgU1FMaXRlU3RhdGVtZW50IHJl
Y29yZHNUb1BydW5lKG1fZGF0YWJhc2UsICJTRUxFQ1QgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERv
bWFpbnMgT1JERVIgQlkgaGFkVXNlckludGVyYWN0aW9uLCBpc1ByZXZhbGVudCwgbGFzdFNlZW4g
TElNSVQgPyIpOwogICAgIGlmIChyZWNvcmRzVG9QcnVuZS5wcmVwYXJlKCkgIT0gU1FMSVRFX09L
CiAgICAgICAgIHx8IHJlY29yZHNUb1BydW5lLmJpbmRJbnQoMSwgY291bnRMZWZ0VG9QcnVuZSkg
IT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5l
ZWRlZCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHVibGljfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lm
TmVlZGVkIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xNjEwLDcgKzE2OTAsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpCiAgICAg
U1FMaXRlU3RhdGVtZW50IHBydW5lQ29tbWFuZChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJERUxF
VEUgZnJvbSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGxpc3RUb1BydW5l
LCAiKSIpKTsKICAgICBpZiAocHJ1bmVDb21tYW5kLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgfHwgcHJ1bmVDb21tYW5kLnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQgZmFpbGVk
LCBlcnJvciBtZXNzYWdlOiAle3B1YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQs
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3Rp
Y3NJZk5lZWRlZCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTYyMyw3ICsxNzAzLDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlTGFzdFNlZW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4KICAgICBpZiAobV91cGRhdGVMYXN0U2VlblN0YXRlbWVudC5iaW5kRG91Ymxl
KDEsIGxhc3RTZWVuLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAg
ICAgICAgIHx8IG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQuYmluZFRleHQoMiwgZG9tYWluLnN0
cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV91cGRhdGVMYXN0U2VlblN0YXRlbWVu
dC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnVwZGF0ZUxhc3RTZWVuIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAle3B1
YmxpY31zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVMYXN0U2VlbiBmYWlsZWQgdG8gYmluZCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xNjYyLDYgKzE3NDIsMjIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHIKICAgICBzZXRQ
cmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFJlc291cmNlTG9hZFByZXZhbGVuY2U6OlZlcnlIaWdo
KTsKIH0KIAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRl
RGF0YVJlY29yZHNSZW1vdmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGludCB2
YWx1ZSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmIChtX3Vw
ZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZFN0YXRlbWVudC5iaW5kSW50KDEsIHZhbHVlKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgbV91cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQuYmlu
ZFRleHQoMiwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV91cGRh
dGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVEYXRhUmVjb3Jkc1JlbW92
ZWQgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHJlc2V0UmVzdWx0ID0gbV91cGRhdGVE
YXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQucmVzZXQoKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c2V0UmVzdWx0LCByZXNldFJlc3VsdCA9PSBTUUxJVEVfT0spOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IGYxZDU2NTVkZWViY2RiMDQ3Y2RkOTZkMmU5MzU2MzRj
ZWFjMDFkM2EuLmVhN2U2NDlmZmY1ZDE2YWE4NGFlMWJlMDUyNmI2YzU4YzU3ZDJlMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBXb3JrUXVldWUmLCBTaG91
bGRJbmNsdWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQ
QUw6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIHBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKGNvbnN0
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSYpOwotCisgICAgdm9pZCBtZXJnZVN0
YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTA1LDE2ICsxMDUsMTcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNv
bmRzKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGljKGNvbnN0
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKKyAgICB2b2lkIG1lcmdlKFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudCYsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICB2b2lkIGNs
ZWFyRGF0YWJhc2VDb250ZW50cygpOwogICAgIGJvb2wgaW5zZXJ0T2JzZXJ2ZWREb21haW4oY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgaW5zZXJ0RG9tYWluUmVsYXRp
b25zaGlwcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpbnNlcnRE
b21haW5SZWxhdGlvbnNoaXAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiwgdW5zaWduZWQgZG9t
YWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbik7CiAgICAgYm9v
bCByZWxhdGlvbnNoaXBFeGlzdHMoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiwgT3B0aW9uYWw8
dW5zaWduZWQ+IGZpcnN0RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzZWNvbmRE
b21haW4pIGNvbnN0OwogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBkb21haW5JRChjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpIGNvbnN0OwotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIGNvbmZpcm1E
b21haW5Eb2VzTm90RXhpc3QoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKLSNlbmRp
ZgorICAgIGJvb2wgZG9tYWluRXhpc3RzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7
CiAgICAgdm9pZCB1cGRhdGVMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxU
aW1lKTsKKyAgICB2b2lkIHVwZGF0ZURhdGFSZWNvcmRzUmVtb3ZlZChjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIGludCk7CiAgICAgdm9pZCBzZXRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgV2FsbFRpbWUpOwogICAgIFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9y
KCkgY29uc3Q7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0J1
dEtlZXBDb29raWVzRm9yKCkgY29uc3Q7CkBAIC0xNzUsNiArMTc2LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9pbnNlcnRUb3BMZXZlbERvbWFpblN0YXRlbWVu
dDsKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2RvbWFpbklERnJvbVN0
cmluZ1N0YXRlbWVudDsKICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9zdG9yYWdlQWNj
ZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQ7CisgICAgV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50IG1fc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zRXhpc3RzU3RhdGVtZW50
OwogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3RvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG87CiAgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV90b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvRXhpc3RzOwogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3RvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzRnJvbTsKQEAgLTE5MSw2ICsxOTMsNyBAQCBwcml2YXRlOgogICAg
IG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNGcm9tRXhpc3RzOwogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX21vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQ7CiAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
IG1fdXBkYXRlTGFzdFNlZW5TdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQgbV91cGRhdGVEYXRhUmVjb3Jkc1JlbW92ZWRTdGF0ZW1lbnQ7CiAgICAgV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50IG1fdXBkYXRlUHJldmFsZW50UmVzb3VyY2VTdGF0ZW1lbnQ7CiAg
ICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9pc1ByZXZhbGVudFJlc291cmNl
U3RhdGVtZW50OwogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3VwZGF0ZVZlcnlQcmV2
YWxlbnRSZXNvdXJjZVN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggZjVlNjY2M2M2MzYwYTdlY2ZkZDI4OTY5OWQ5
ZGZiZTUwZDE3MGE3Yi4uNjU4OWY2YjFkZTJiZDg1NzIxYzYzMDcyMWQzYzM2Zjk1NDFiMWM1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5j
cHAKQEAgLTcwMSwxNiArNzAxLDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGUKICAgICB1cGRh
dGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMoZG9tYWluc1RvQmxvY2ssIFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCi1ib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6d2FzQWNjZXNzZWRBc0ZpcnN0UGFydHlE
dWVUb1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBjdXJyZW50
LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiB1cGRhdGVkKSBjb25zdAotewotICAgIGlm
ICghY3VycmVudC5oYWRVc2VySW50ZXJhY3Rpb24gJiYgIXVwZGF0ZWQuaGFkVXNlckludGVyYWN0
aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIG1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lID0gc3RkOjptYXgoY3VycmVudC5tb3N0UmVjZW50VXNlckludGVyYWN0aW9u
VGltZSwgdXBkYXRlZC5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSk7Ci0KLSAgICByZXR1
cm4gdXBkYXRlZC5sYXN0U2VlbiA8PSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIDI0
X2g7Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjptZXJnZVN0
YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGljcykKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTcxOSwxMSArNzA5LDggQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Om1lcmdlU3RhdGlzdGljcyhWZWN0
b3I8UmVzb3VyY2VMb2FkU3RhdGkKICAgICAgICAgYXV0byByZXN1bHQgPSBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5lbnN1cmUoc3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluLCBbJnN0YXRpc3Rp
Y10gewogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoc3RhdGlzdGljKTsKICAgICAgICAgfSk7
Ci0gICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgICAgIGlmICh3YXNB
Y2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uKHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUsIHN0YXRpc3RpYykpCi0gICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24rKzsKKyAgICAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUubWVyZ2Uoc3RhdGlzdGljKTsKLSAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmluZGV4IDg3OWUxYWZj
ZmI4NjIyOTc2NDZiNTAwODA2ZmZjNGY5YTBhYTAzNDcuLjY4MDU0YTVjMjE0M2Q2NmU4ZDg1NTY1
NGZhNDk2OWMzZTIyYjJlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpLZXllZEVuY29kZXI+IGNyZWF0ZUVuY29kZXJGcm9tRGF0YSgpIGNv
bnN0OwogICAgIHZvaWQgbWVyZ2VXaXRoRGF0YUZyb21EZWNvZGVyKFdlYkNvcmU6OktleWVkRGVj
b2RlciYpOwogCi0gICAgdm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0
YXRpc3RpY3M+JiYpOworICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYpIGNvbnN0
OwogCiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpIG92ZXJyaWRlOwpAQCAtMTE3LDcgKzExNyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBo
YXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdDsKICAgICBib29sIHNob3VsZFJlbW92ZUFs
bFdlYnNpdGVEYXRhRm9yKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBib29sIHNob3VsZENoZWNr
Rm9yR3JhbmRmYXRoZXJpbmcpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkUmVtb3ZlQWxsQnV0Q29v
a2llc0ZvcihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5k
ZmF0aGVyaW5nKSBjb25zdDsKLSAgICBib29sIHdhc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9V
c2VySW50ZXJhY3Rpb24oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgY3VycmVudCwgY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgdXBkYXRlZCkgY29uc3Q7CiAgICAgdm9pZCBpbmNy
ZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50Rm9yRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKFJlc291cmNl
TG9hZFN0YXRpc3RpY3MmLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCBy
ZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4oY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIEhhc2hTZXQ8UmVkaXJlY3RlZFRvRG9tYWluPiYs
IHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDZmNjFlZDM0M2RlMjY2YWEzNWY5ZWMwZGE3
NDIxMTAxOTM2MmFmZGEuLjk5YTY3MTA2NjY5NmY0ZmQyODZmY2Q3ZDIwNzViNGU3NjU5NTNmZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTEwOCw2ICsx
MDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsYXNzaWZ5UHJldmFsZW50UmVzb3Vy
Y2VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBtZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpID0gMDsKICAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VB
Y2Nlc3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggOTRmMDE2ODFmNmQyZDRjODY3OTA4
MmZmMDU1NzhjMDRjMDE0NmM5MC4uMTEzZDM1MzhjZmEwOTAzMTk4YmMyMDhiNzg2ODMwOTViNDk4
NzJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKQEAgLTI2NCwxOSArMjY0LDE3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyCiAgICAgLy8g
Y29taW5nIGZyb20gSVBDLiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIG9ubHkgY29udGFpbnMgc3Ry
aW5ncyB3aGljaCBhcmUgc2FmZSB0byBtb3ZlIHRvIG90aGVyIHRocmVhZHMgYXMgbG9uZwogICAg
IC8vIGFzIG5vYm9keSBvbiB0aGlzIHRocmVhZCBob2xkcyBhIHJlZmVyZW5jZSB0byB0aG9zZSBz
dHJpbmdzLgogICAgIHBvc3RUYXNrKFt0aGlzLCBzdGF0aXN0aWNzID0gV1RGTW92ZShzdGF0aXN0
aWNzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSB8fCAhaXM8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpKQor
ICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGF1dG8mIG1lbW9yeVN0b3JlID0gZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpOwotICAgIAotICAgICAgICBtZW1vcnlT
dG9yZS5tZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0aWNzKSk7CisgICAgICAgIG1fc3Rh
dGlzdGljc1N0b3JlLT5tZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0aWNzKSk7CiAKICAg
ICAgICAgLy8gV2UgY2FuIGNhbmNlbCBhbnkgcGVuZGluZyByZXF1ZXN0IHRvIHByb2Nlc3Mgc3Rh
dGlzdGljcyBzaW5jZSB3ZSdyZSBkb2luZyBpdCBzeW5jaHJvbm91c2x5IGJlbG93LgotICAgICAg
ICBtZW1vcnlTdG9yZS5jYW5jZWxQZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0KCk7
CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jYW5jZWxQZW5kaW5nU3RhdGlzdGljc1Byb2Nl
c3NpbmdSZXF1ZXN0KCk7CiAKICAgICAgICAgLy8gRmlyZSBiZWZvcmUgcHJvY2Vzc2luZyBzdGF0
aXN0aWNzIHRvIHByb3BhZ2F0ZSB1c2VyIGludGVyYWN0aW9uIGFzIGZhc3QgYXMgcG9zc2libGUg
dG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KLSAgICAgICAgbWVtb3J5U3RvcmUudXBkYXRlQ29va2ll
QmxvY2tpbmcoW10oKSB7IH0pOwotICAgICAgICBtZW1vcnlTdG9yZS5wcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzKCk7CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT51cGRhdGVDb29r
aWVCbG9ja2luZyhbXSgpIHsgfSk7CisgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5wcm9jZXNz
U3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAgICAgfSk7CiB9CiAKQEAgLTU5Nyw2ICs1OTUs
MzUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldExhc3RTZWVuKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4KICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWlu
ID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWlu
Lmlzb2xhdGVkQ29weSgpLCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2
YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0
b3JlKSB7CisgICAgICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3RpYyhkb21h
aW4pOworICAgICAgICAgICAgc3RhdGlzdGljLmxhc3RTZWVuID0gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKGxhc3RTZWVuLnNlY29uZHMoKSk7CisgICAgICAgICAgICBzdGF0aXN0aWMuaGFkVXNl
ckludGVyYWN0aW9uID0gaGFkVXNlckludGVyYWN0aW9uOworICAgICAgICAgICAgc3RhdGlzdGlj
Lm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24uc2Vjb25kcygpKTsKKyAgICAgICAgICAgIHN0YXRp
c3RpYy5ncmFuZGZhdGhlcmVkID0gaXNHcmFuZGZhdGhlcmVkOworICAgICAgICAgICAgc3RhdGlz
dGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSBpc1ByZXZhbGVudDsKKyAgICAgICAgICAgIHN0YXRp
c3RpYy5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSA9IGlzVmVyeVByZXZhbGVudDsKKyAgICAgICAg
ICAgIHN0YXRpc3RpYy5kYXRhUmVjb3Jkc1JlbW92ZWQgPSBkYXRhUmVjb3Jkc1JlbW92ZWQ7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghdG9wRnJhbWVEb21haW4uaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICAgICAgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gdG9wRnJhbWVEb21h
aW5zOworICAgICAgICAgICAgICAgIHRvcEZyYW1lRG9tYWlucy5hZGQodG9wRnJhbWVEb21haW4p
OworICAgICAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5z
ID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbnMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljczsKKyAgICAgICAgICAg
IHN0YXRpc3RpY3MuYXBwZW5kKFdURk1vdmUoc3RhdGlzdGljKSk7CisgICAgICAgICAgICBtX3N0
YXRpc3RpY3NTdG9yZS0+bWVyZ2VTdGF0aXN0aWNzKFdURk1vdmUoc3RhdGlzdGljcykpOworICAg
ICAgICB9CisgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIH0pOworfQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA3ZWFlMWE3Yzg5MTQx
OWQ0MWI2MDUyNTQ1MjQ2ZGZlMTRhZWQ2ZmRhLi5mYjE4MTA1MWE0YzRhNTRlYzM1NWRiYTUwZWYw
Njk0ZjI3ZWFiN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCkBAIC0xMjksNiArMTI5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYm
KTsKICAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGlj
Rm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2
YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZHVtcFJlc291
cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
ZGMyNWM2YmYwMGEzNWQ3NGJiODBmNTg4YjVjOTcyOGMxNjg2Y2NmMS4uMmZiNzgwOWEwNmNiZGQ0
ZDEzYTI0NzNjNGQ0MjBjYzk0MTM3MjUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTk3NCw2ICs5NzQsMTkgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWEKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Om1lcmdlU3Rh
dGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2
YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPm1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhkb21haW4sIHRvcEZyYW1lRG9t
YWluLCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFS
ZWNvcmRzUmVtb3ZlZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0KK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+IGRvbWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDkwY2Y3MzJm
NzJiMzkxOGY2NmJjZDM1ZDIwNDcyOTJhMDM2MDEzZDcuLjNhNjI1NmYyZjQ4ZmFmYmY2YTdiZGNh
ZGUyMDhiYmYyNDg3OTE1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKQEAgLTI0Miw2ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVy
aW5nVGltZShQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBTZWNvbmRzIGxhc3RTZWVuLCBi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9u
LCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2
YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bChQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoUEFMOjpT
ZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChQQUw6OlNlc3Npb25J
RCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IGE3NzY2M2U3Y2Y2NDEzOGI2NzkxODBiMWM5YWM2NGI0NzM4OWM3MWIuLjFlZjhmYmMw
ZGFjMTRmMzZiNzdmYzc1OTFlMjQ0YjllMzI1OTE4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtOTQs
NiArOTQsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgSXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pIC0+IChib29sIGlzVmVyeVByZXZh
bGVudCkgQXN5bmMKICAgICBTZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+IHNlY29uZHMpIC0+ICgpIEFzeW5jCiAg
ICAgU2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwor
ICAgIE1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2Vy
SW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dy
YW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1aW50
NjRfdCBkYXRhUmVjb3Jkc1JlbW92ZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0UHJldmFsZW50UmVz
b3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBTZXRQcmV2YWxlbnRSZXNvdXJjZUZv
ckRlYnVnTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIEhhZFVzZXJJbnRlcmFjdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
c291cmNlRG9tYWluKSAtPiAoYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24pIEFzeW5jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcAppbmRleCA5NjBmOWZiMGYyMmI5ZWM4MDllNjUxYmViOWU1YTc2MzBjNmVkOTU0Li41MTJl
MDVjYzg1YmM0ZWUxOGFjNTY4ZmNkMzk4MzcwY2JmZWJhMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAg
LTExOSw2ICsxMTksMTcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFz
dFNlZW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwKICNlbmRpZgogfQogCit2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1Jl
ZiB0b3BGcmFtZURvbWFpbiwgZG91YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biwgZG91YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVk
LCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJl
Y29yZHNSZW1vdmVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
TWVyZ2VTdGF0aXN0aWNGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPm1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVEb21haW4p
LT5zdHJpbmcoKSksIFNlY29uZHMgeyBsYXN0U2VlbiB9LCBoYWRVc2VySW50ZXJhY3Rpb24sIFNl
Y29uZHMgeyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uIH0sIGlzR3JhbmRmYXRoZXJlZCwgaXNQ
cmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCBbY29udGV4dCwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7
CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworI2VuZGlm
Cit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCkBAIC0yNjAsNyArMjcxLDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3IKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRm
YXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBo
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZGZh
dGhlcmVkRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50
ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+aXNHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRo
ZXJlZCkgewogICAgICAgICBjYWxsYmFjayhpc0dyYW5kZmF0aGVyZWQsIGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggY2NmNTkxMzg5ZmI5MTVmMjM1MTZkMzA0OGM5ZTI3
ZGNjMTk3ZTMyNS4uZjJhMTc4Mjk2ZWE3OWViNGVmNTU3YWIwZTA3OGI5YWQ2ZWE5YWE1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmgKQEAgLTQ5LDYgKzQ5LDggQEAgV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW8KIFdLX0VY
UE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzRGVidWdNb2RlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOyAgICAKIHR5cGVk
ZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NMYXN0U2VlbkZ1bmN0aW9uKSh2
b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGhvc3QsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzTGFzdFNlZW5GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7
Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0
aWNGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFt
ZURvbWFpbiwgZG91YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91Ymxl
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlz
UHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1v
dmVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTWVyZ2VTdGF0
aXN0aWNGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbikodm9pZCogZnVu
Y3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCAzMWE3MjU3YzEwMWExMDA1NzEyOGI2ODc1YmQ0M2I3MDZjMzRlODUzLi4zODMw
YjI1MmMxYjQ4ZGE3NDFhODRiODU5ZGM4NmUzMTQwODVjZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTUzNSw2ICs1MzUsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRMYXN0U2VlbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmwKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRMYXN0U2VlbihzZXNzaW9uSUQs
IHJlc291cmNlRG9tYWluLCBsYXN0U2VlbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjptZXJnZVN0YXRpc3RpY0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgU2Vjb25k
cyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJv
b2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpNZXJnZVN0YXRpc3RpY0ZvclRlc3Rp
bmcoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGxhc3RTZWVuLCBo
YWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRo
ZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggNjQ3MTNhYjFhMGNmZDI2ZGYyZjg2MWRiMWE0YWU3YWYzODZkYjk2
Zi4uMmQ2YWRiZTNiYTNkNWZjZTVjOTZhZWY2M2FlZmJjZjZlZjJjZDA2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
QEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRz
UHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBt
ZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29s
IGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQs
IHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25hbDxTZWNvbmRzPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldENhY2hlTWF4QWdlQ2FwKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggNjkzNTVkNzk3
YzI1YzhiYzIwMTk5Zjc3YWQwODY1NDAwNTA5NjRlNC4uNjI3ZDJkOTljYjNlYzcyNzBiODc2N2Jh
MzA2ZDhmYjUwOWE4YmRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTEyMTQsNiArMTIxNCwyNCBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaQogICAgIH0KIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjppc0dyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCBpc1ByZXZhbGVudCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAKKyAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgp
IHx8IHVybC5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wt
Pm5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3MtPmlzR3JhbmRmYXRoZXJl
ZChtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vz
c1Bvb2xzKCkuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29u
c3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTUzMyw2ICsxNTUxLDIx
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0TGFzdFNlZW4oY29uc3QgVVJMJiB1cmwsIFNl
Y29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhCiAgICAgfQogfQogCit2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCAsIGNvbnN0IFVS
TCYgdG9wRnJhbWVVcmwsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9u
LCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVk
LCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJl
Y29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKHVybC5wcm90b2NvbElzQWJvdXQoKSB8fCB1cmwuaXNFbXB0eSgpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bv
b2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IHByb2Nl
c3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgcHJvY2Vzcy0+bWVyZ2VTdGF0
aXN0aWNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHVybCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVXJsIH0sIGxhc3RT
ZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3Jh
bmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1v
dmVkLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRv
ci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDhhNWZlYmE4M2I3ZGEwZGNjNzRiNzhj
NWEwMTkyYzBmN2Y1MmVjN2YuLjAxODM3ZmVhMDI3NmY0Yjg0YTZhZGM0ZGU1MDRlZWQyNTdlYWFk
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE1OSw5ICsxNTksMTEgQEAgcHVibGljOgogICAgIHZvaWQg
c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNl
dEdyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIGlzR3JhbmRmYXRoZXJlZChjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHNldFVzZUlUUERhdGFiYXNlKGJvb2wpOwog
ICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBVUkwmLCBTZWNvbmRzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNGb3JU
ZXN0aW5nKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdG9wRnJhbWVVcmwsIFNlY29uZHMgbGFzdFNl
ZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVy
eVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QoYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFBydW5lRW50cmllc0Rvd25UbyhzaXplX3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWVhYWY2ODcxNTI2OWQwZTc0NTM2M2M0OWYzZThmYTA2
ZWJmNmRkNi4uNzBmMjBhM2JhMzkyYzlkM2Y0NWVmYTIyNDllMDFjY2I3YmNjYzI4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDE5LTEwLTAyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29t
PgorCisgICAgICAgIFVwZGF0ZWQgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFyZSBuZXZlciBt
ZXJnZWQgaW50byB0aGUgU1FMaXRlIERhdGFiYXNlIGJhY2tlbmQgKDIwMjM3MikuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIzNzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU1ODU0NTQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1
bGdoYW0uIAorCisgICAgICAgIEFkZGVkIHRlc3RpbmcgZnVuY3Rpb25hbGl0eSB0byB0aGUgbWVy
Z2VTdGF0aXN0aWNzKCkgZnVuY3Rpb24gb2YgdGhlIAorICAgICAgICBTUUxpdGUgYmFja2VuZC4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlz
dGljc01lcmdlU3RhdGlzdGljKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGlj
c0NhbGxEaWRTZXRNZXJnZVN0YXRpc3RpY0NhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjpkaWRNZXJnZVN0YXRpc3RpYyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oOgorCiAyMDE5LTEwLTAyICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzXSBEZWRpY2F0ZSBhIGJvdCBmb3IgbWFjT1MtSGln
aC1TaWVycmEtRGVidWctQnVpbGQtRVdTIHF1ZXVlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApp
bmRleCBhMDFkNGZiNTM5MGQ0YWQ0ZmM1NmY2ZGY4NjczNjliZjljNjZhNjkzLi40MmFhZDU0ZTMx
MTNhMzgzZjczNDkxNzc0MTUyMTdjZWQ5OTBkNGFkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwKQEAgLTI5OCw2ICsyOTgsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoRE9NU3RyaW5nIGhvc3ROYW1lLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZv
aWQgc2V0U3RhdGlzdGljc0xhc3RTZWVuKERPTVN0cmluZyBob3N0TmFtZSwgZG91YmxlIHNlY29u
ZHMsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVy
Z2VTdGF0aXN0aWMoRE9NU3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcgdG9wRnJhbWVEb21haW4s
IGRvdWJsZSBsYXN0U2VlbiwgYm9vbGVhbiBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sZWFuIGlzR3JhbmRmYXRoZXJlZCwgYm9vbGVhbiBp
c1ByZXZhbGVudCwgYm9vbGVhbiBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGxvbmcgZGF0YVJl
Y29yZHNSZW1vdmVkLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc2V0U3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiB2YWx1
ZSwgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NWZXJ5
UHJldmFsZW50UmVzb3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFuIHZhbHVlLCBvYmpl
Y3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGJvb2xlYW4gaXNTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggOWMxMGI0
MDg0ZDliZjNkOWZmZDRiZDA3YTVlYjVmZjQzZWNkOTRkOC4uMDFiNzU2MmQxYzBjOGQxMjM2OTM0
MDY3MWZjMDJlM2Q3ZTZhZTE5MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTM1Niw2ICszNTYsMTEg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0
aWNzQ2FsbERpZFNldExhc3RTZWVuQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IkNhbGxEaWRNZXJnZVN0YXRpc3RpYyIpKSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlz
dGljc0NhbGxEaWRTZXRNZXJnZVN0YXRpc3RpY0NhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIkNhbGxEaWRTZXRQcmV2YWxlbnRSZXNvdXJjZSIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5l
ci0+c3RhdGlzdGljc0NhbGxEaWRTZXRQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrKCk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cAppbmRleCA4MmRiNjc0Mjk5OWM3N2RiYmNmYzM1MjQ2NTQwNjU3NGJiMzYzNTE3Li4wMTEwNGFj
Zjg0YmFiMTI3ZTUxNzNkMzc5MzJlNDI5OWFmYTNjMTU0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTczMiw2ICs3
MzIsNyBAQCBlbnVtIHsKICAgICBTZXRTdGF0aXN0aWNzRGVidWdNb2RlQ2FsbGJhY2tJRCwKICAg
ICBTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGVDYWxsYmFja0lELAog
ICAgIFNldFN0YXRpc3RpY3NMYXN0U2VlbkNhbGxiYWNrSUQsCisgICAgU2V0U3RhdGlzdGljc01l
cmdlU3RhdGlzdGljQ2FsbGJhY2tJRCwKICAgICBTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2VDYWxsYmFja0lELAogICAgIFNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2VDYWxs
YmFja0lELAogICAgIFNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb25DYWxsYmFja0lE
LApAQCAtMTQ1Myw2ICsxNDU0LDU3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxE
aWRTZXRMYXN0U2VlbkNhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFNldFN0
YXRpc3RpY3NMYXN0U2VlbkNhbGxiYWNrSUQpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFN0
YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNTdHJpbmdSZWYg
dG9wRnJhbWVEb21haW4sIGRvdWJsZSBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24s
IGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwg
Ym9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNv
cmRzUmVtb3ZlZCwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRl
c3RSdW5uZXJDYWxsYmFjayhTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNDYWxsYmFja0lELCBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisKKyAg
ICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0
TmFtZSIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aEpT
U3RyaW5nKGhvc3ROYW1lKSkpOworICAgIAorICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRvcEZyYW1lRG9tYWluIikpKTsKKyAgICB2YWx1ZXMu
YXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcodG9wRnJhbWVEb21haW4p
KSk7CisKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJMYXN0U2VlbiIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLRG91YmxlQ3Jl
YXRlKGxhc3RTZWVuKSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiSGFkVXNlckludGVyYWN0aW9uIikpKTsKKyAgICB2YWx1ZXMuYXBw
ZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGhhZFVzZXJJbnRlcmFjdGlvbikpKTsKKworICAg
IGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb24iKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Rv
dWJsZUNyZWF0ZShtb3N0UmVjZW50VXNlckludGVyYWN0aW9uKSkpOworCisgICAga2V5cy5hcHBl
bmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNHcmFuZGZhdGhlcmVk
IikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlzR3JhbmRm
YXRoZXJlZCkpKTsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIklzUHJldmFsZW50IikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0so
V0tCb29sZWFuQ3JlYXRlKGlzUHJldmFsZW50KSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNWZXJ5UHJldmFsZW50IikpKTsKKyAg
ICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlzVmVyeVByZXZhbGVudCkp
KTsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkRhdGFSZWNvcmRzUmVtb3ZlZCIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdL
VUludDY0Q3JlYXRlKGRhdGFSZWNvcmRzUmVtb3ZlZCkpKTsKKworICAgIFZlY3RvcjxXS1N0cmlu
Z1JlZj4gcmF3S2V5cyhrZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFs
dWVzKHZhbHVlcy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIHJhd0tleXNbaV0gPSBrZXlzW2ldLmdldCgpOworICAgICAg
ICByYXdWYWx1ZXNbaV0gPSB2YWx1ZXNbaV0uZ2V0KCk7CisgICAgfQorICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyIpKTsKKyAgICBXS1JldGFpblB0
cjxXS0RpY3Rpb25hcnlSZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0RpY3Rpb25hcnlDcmVh
dGUocmF3S2V5cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJhd0tleXMuc2l6ZSgpKSk7Cisg
ICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxs
cHRyKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdlU3Rh
dGlzdGljQ2FsbGJhY2soKQoreworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlz
dGljc01lcmdlU3RhdGlzdGljQ2FsbGJhY2tJRCk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZh
bHVlLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNhY2hlVGVzdFJ1bm5l
ckNhbGxiYWNrKFNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrSUQsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNDllNWZmMDg3NjA2NzlmOGY3M2I1NWNlZDlmZmM3NTUw
YTFkNmJkZi4uZjE3MDAxMjk4MzFiNmY5NDcwNzYyZjAzMGZlY2Q3MDFjNGQzYmEzYiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
QEAgLTM5Niw2ICszOTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNl
dFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlQ2FsbGJhY2soKTsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NMYXN0U2VlbihKU1N0cmluZ1JlZiBob3N0TmFtZSwgZG91YmxlIHNlY29uZHMsIEpT
VmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRT
ZXRMYXN0U2VlbkNhbGxiYWNrKCk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0
aWMoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBkb3Vi
bGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJv
b2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIEpTVmFsdWVS
ZWYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRNZXJn
ZVN0YXRpc3RpY0NhbGxiYWNrKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRQcmV2YWxlbnRSZXNv
dXJjZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291
cmNlKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNvbXBsZXRp
b25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggZTdkYmUzODc3ZGMxMmY3ZTI4NmEzMzJlNzE4YzRiNTM0ZDljYTAzNy4uMGJkNzc2MWJiZmM1
NTA0ZWYyMDU5ZDlhMWYzYjQ0NzU3NjA3NGUwYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTMyNjEsNiArMzI2MSwxNCBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpzZXRTdGF0aXN0aWNzTGFzdFNlZW4oV0tTdHJpbmdSZWYgaG9zdCwgZG91YmxlIHNlY29u
ZHMpCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0TGFzdFNlZW4oKTsKIH0KIAordm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLU3RyaW5nUmVm
IGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9v
bCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50
LCBpbnQgZGF0YVJlY29yZHNSZW1vdmVkKQoreworICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxi
YWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzTWVyZ2VTdGF0aXN0aWMoVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwg
aG9zdCwgdG9wRnJhbWVEb21haW4sIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVy
eVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0
aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGlt
ZW91dCk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkTWVyZ2VTdGF0aXN0aWMoKTsKK30K
Kwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdL
U3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUpCiB7CiAgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2Fs
bGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCmluZGV4IGZkMWM1MmFhNDBhZjI2ZDRkZDBkODYyYTIwMzk2Njg3YzI2ODcyMGYu
LjZjMmQyZDg4NmUwM2I3N2I2MmJlNTUzOGEyMmI5YjBlOGQ0YzQxZTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTIxMCw2ICsyMTAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgc2V0
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLU3RyaW5nUmVmIGhvc3RO
YW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1N0cmluZ1JlZiBob3N0TmFt
ZSwgZG91YmxlIHNlY29uZHMpOworICAgIHZvaWQgc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGlj
KFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluLCBkb3VibGUgbGFz
dFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNW
ZXJ5UHJldmFsZW50LCBpbnQgZGF0YVJlY29yZHNSZW1vdmVkKTsKICAgICB2b2lkIHNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7
CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVm
IGhvc3ROYW1lLCBib29sIHZhbHVlKTsKICAgICBTdHJpbmcgZHVtcFJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXgg
YzRkMThhYmQ5YTVjNGFjMzNiZjJhZTAyNmMyOGZiMGU2MjJlM2E3My4uMmY4YjMwNmUyYzhjODcz
ZmZkMzE3OTYxYzgxMmM1YmM4ODJiNjNjZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKQEAgLTExMDAsNiArMTEwMCwzNiBAQCBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzTWVyZ2VT
dGF0aXN0aWMiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09
IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKworICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVz
c2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdl
Qm9keSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBob3N0TmFtZUtleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhvc3ROYW1lIikpOworICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdG9wRnJhbWVEb21haW5LZXkgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUb3BGcmFtZURvbWFpbiIpKTsKKyAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGxhc3RTZWVuS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiTGFzdFNlZW4iKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBoYWRVc2VySW50ZXJhY3Rpb25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJIYWRVc2VySW50ZXJhY3Rpb24iKSk7CisgICAgICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uS2V5ID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiIp
KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGlzR3JhbmRmYXRoZXJlZEtleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzR3JhbmRmYXRoZXJlZCIp
KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGlzUHJldmFsZW50S2V5ID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNQcmV2YWxlbnQiKSk7CisgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpc1ZlcnlQcmV2YWxlbnRLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1ZlcnlQcmV2YWxlbnQiKSk7CisgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkYXRhUmVjb3Jkc1JlbW92ZWRLZXkgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEYXRhUmVjb3Jkc1JlbW92ZWQiKSk7
CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0aW1lc0FjY2Vzc2VkRmlyc3RQYXJ0
eUludGVyYWN0aW9uS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
VGltZXNBY2Nlc3NlZEZpcnN0UGFydHlJbnRlcmFjdGlvbiIpKTsKKworICAgICAgICBXS1N0cmlu
Z1JlZiBob3N0TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaG9zdE5hbWVLZXkuZ2V0KCkpKTsKKyAg
ICAgICAgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHRvcEZy
YW1lRG9tYWluS2V5LmdldCgpKSk7CisgICAgICAgIFdLRG91YmxlUmVmIGxhc3RTZWVuID0gc3Rh
dGljX2Nhc3Q8V0tEb3VibGVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJv
ZHlEaWN0aW9uYXJ5LCBsYXN0U2VlbktleS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYg
aGFkVXNlckludGVyYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaGFkVXNlckludGVyYWN0aW9u
S2V5LmdldCgpKSk7CisgICAgICAgIFdLRG91YmxlUmVmIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b24gPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleSht
ZXNzYWdlQm9keURpY3Rpb25hcnksIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25LZXkuZ2V0KCkp
KTsKKyAgICAgICAgV0tCb29sZWFuUmVmIGlzR3JhbmRmYXRoZXJlZCA9IHN0YXRpY19jYXN0PFdL
Qm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25h
cnksIGlzR3JhbmRmYXRoZXJlZEtleS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgaXNQ
cmV2YWxlbnQgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBpc1ByZXZhbGVudEtleS5nZXQoKSkpOworICAg
ICAgICBXS0Jvb2xlYW5SZWYgaXNWZXJ5UHJldmFsZW50ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFu
UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaXNW
ZXJ5UHJldmFsZW50S2V5LmdldCgpKSk7CisgICAgICAgIFdLVUludDY0UmVmIGRhdGFSZWNvcmRz
UmVtb3ZlZCA9IHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgZGF0YVJlY29yZHNSZW1vdmVkS2V5LmdldCgpKSk7
CisgICAgICAgIAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlz
dGljc01lcmdlU3RhdGlzdGljKGhvc3ROYW1lLCB0b3BGcmFtZURvbWFpbiwgV0tEb3VibGVHZXRW
YWx1ZShsYXN0U2VlbiksIFdLQm9vbGVhbkdldFZhbHVlKGhhZFVzZXJJbnRlcmFjdGlvbiksIFdL
RG91YmxlR2V0VmFsdWUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiksIFdLQm9vbGVhbkdldFZh
bHVlKGlzR3JhbmRmYXRoZXJlZCksIFdLQm9vbGVhbkdldFZhbHVlKGlzUHJldmFsZW50KSwgV0tC
b29sZWFuR2V0VmFsdWUoaXNWZXJ5UHJldmFsZW50KSwgV0tVSW50NjRHZXRWYWx1ZShkYXRhUmVj
b3Jkc1JlbW92ZWQpKTsKKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCiAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQo
bWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKIApAQCAtMTgwMSw2ICsx
ODMxLDEyIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldExhc3RTZWVuKCkKICAgICBXS1Bh
Z2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
Lm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCit2b2lk
IFRlc3RJbnZvY2F0aW9uOjpkaWRNZXJnZVN0YXRpc3RpYygpCit7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiQ2FsbERpZE1lcmdlU3RhdGlzdGljIikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXco
KS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKIHZvaWQgVGVzdEludm9jYXRp
b246OmRpZFNldFByZXZhbGVudFJlc291cmNlKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJDYWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2UiKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmgKaW5kZXggNzZhYTliOGUxZGMwMmVjOGFkOTM4Njk0MTU3NDU4ZjE5NWRh
M2NkNi4uYTI2NWViOWIyNmU5NGQxZTRhOGZmZGNlZjVkZTI5NDM5NTFiYjQwNSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRTZXRTdGF0aXN0aWNzRGVidWdNb2RlKCk7CiAgICAgdm9pZCBkaWRTZXRQ
cmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZSgpOwogICAgIHZvaWQgZGlkU2V0TGFzdFNlZW4o
KTsKKyAgICB2b2lkIGRpZE1lcmdlU3RhdGlzdGljKCk7CiAgICAgdm9pZCBkaWRTZXRQcmV2YWxl
bnRSZXNvdXJjZSgpOwogICAgIHZvaWQgZGlkU2V0VmVyeVByZXZhbGVudFJlc291cmNlKCk7CiAg
ICAgdm9pZCBkaWRTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhODRhOTJmYzhi
MzFmODVkNzZkOWQ5NTE2OWVhZmI0OTg3YzIzZTY3Li4yNTE4NjZiMWRkNGU3OTkwM2U2ZTMwMmI4
YjMxODQzZDdjZTNjMGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTAtMDIgIEthdGUg
Q2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlZCBy
ZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgYXJlIG5ldmVyIG1lcmdlZCBpbnRvIHRoZSBTUUxpdGUg
RGF0YWJhc2UgYmFja2VuZCAoMjAyMzcyKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU4NTQ1
NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4gCisKKyAgICAgICAgQWRk
ZWQgbGF5b3V0IHRlc3RzIHRvIHRlc3Qgc3VjY2VzZnVsIG1lcmdpbmcgb2YgcmVzb3VyY2UgbG9h
ZAorICAgICAgICBzdGF0aXN0aWNzIGludG8gU1FMaXRlIGJhY2tlbmQuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90
LW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3Zl
cndyaXRlLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1z
dGF0aXN0aWMtZG9lcy1wYXJ0aWFsbHktb3ZlcndyaXRlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdl
LXN0YXRpc3RpYy1kb2VzLXBhcnRpYWxseS1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbDogQWRkZWQu
CisKIDIwMTktMTAtMDIgIE1pZ3VlbCBHb21leiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbV1BFXSBVbnJldmlld2VkIGdhcmRlbmluZzogYWRkIG5ldyBleHBlY3RhdGlvbnMgYWZ0
ZXIgcjI1MDYwMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJhc2UtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJiNDAxZjlhNWU5ZGNjZjIzYTM3NzAwM2Q2MjdhYTVmODg0ZmQzODYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtbm90LW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgdGhhdCBtZXJnZWQgc3RhdGlzdGljIGRv
ZXMgbm90IG92ZXJ3cml0ZSBvbGQgc3RhdGlzdGljCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIEhvc3QgZGlkIG5vdCBvdmVyd3JpdGUgb2xkIHByZXZhbGVudCByZXNvdXJj
ZSB2YWx1ZS4KK1BBU1MgSG9zdCBkaWQgbm90IG92ZXJ3cml0ZSBvbGQgdmVyeSBwcmV2YWxlbnQg
cmVzb3VyY2UgdmFsdWUuCitQQVNTIEhvc3QgZGlkIG5vdCBvdmVyd3JpdGUgb2xkIGhhZCB1c2Vy
IGludGVyYWN0aW9uIHZhbHVlCitQQVNTIEhvc3QgZGlkIG5vdCBvdmVyd3JpdGUgb2xkIGdyYW5k
ZmF0aGVyZWQgdmFsdWUuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW5vdC1vdmVyd3JpdGUtZGF0YWJhc2Uu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJn
ZS1zdGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDI0OWVlYzM5ZTNmMTFiNWU0NTdkYmQ4YmI5MmVjN2RiYzVkOGVkZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1z
dGF0aXN0aWMtZG9lcy1ub3Qtb3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSw3OSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBj
aGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgbWVyZ2VkIHN0YXRp
c3RpYyBkb2VzIG5vdCBvdmVyd3JpdGUgb2xkIHN0YXRpc3RpYyIpOzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdzZXRVcEFuZFJ1bigpJywgMCkiPgorPHNjcmlw
dD4KKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IHVybCA9ICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IHNhbXBsZVRvcEZyYW1lVVJMID0gImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMCI7CisgICAgY29uc3Qgb2xkZXJUaW1lc3RhbXAgPSBNYXRoLnJvdW5kKChu
ZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwKTsKKyAgICBjb25zdCBuZXdlclRpbWVzdGFtcCA9
IG9sZGVyVGltZXN0YW1wICsgMTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgIGZ1bmN0aW9uIGluc2VydFNlY29uZFN0YXRpc3RpYygpIHsKKyAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKHVybCwgIiIsIG9sZGVyVGltZXN0YW1w
LCBmYWxzZSwgOTksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHVybCkpCisg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgZGlkIG5vdCBvdmVyd3JpdGUgb2xkIHByZXZh
bGVudCByZXNvdXJjZSB2YWx1ZS4iKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkhvc3QgZGlkIG92ZXJ3cml0ZSBvbGQgcHJldmFsZW50IHJlc291cmNlIHZhbHVl
LiIpCisgICAgICAgICAgCisgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzVmVy
eVByZXZhbGVudFJlc291cmNlKHVybCkpCisgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3Qg
ZGlkIG5vdCBvdmVyd3JpdGUgb2xkIHZlcnkgcHJldmFsZW50IHJlc291cmNlIHZhbHVlLiIpOwor
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgb3Zlcndy
aXRlIG9sZCB2ZXJ5IHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgIGlmICh0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbih1cmwpKQorICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCBoYWQgdXNlciBpbnRlcmFjdGlv
biB2YWx1ZSIpOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9z
dCBkaWQgb3ZlcndyaXRlIG9sZCBoYWQgdXNlciBpbnRlcmFjdGlvbiB2YWx1ZSIpOworCisgICAg
ICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCh1cmwpKQorICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCBncmFuZGZh
dGhlcmVkIHZhbHVlLiIpOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSG9zdCBkaWQgb3ZlcndyaXRlIG9sZCBncmFuZGZhdGhlcmVkIHZhbHVlLiIpOworCisgICAg
ICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgfSk7CisgICAg
ICB9KTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gcnVuVGVzdFJ1bm5lclRlc3QoKSB7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKHVybCwgIiIsIG5l
d2VyVGltZXN0YW1wLCB0cnVlLCAxMDAsIHRydWUsIHRydWUsIHRydWUsIDEsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKHVybCkpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBnb3Qgc2V0IGFzIHBy
ZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSh1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkhvc3QgZ290IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAg
ICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odXJs
KSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdvdCBsb2dnZWQgZm9yIHVzZXIg
aW50ZXJhY3Rpb24uIik7CisgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRlc3RSdW5u
ZXIuaXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCh1cmwpKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkhvc3QgZ290IHNldCBhcyBncmFuZGZhdGhlcmVkLiIpOworCisgICAgICAgICAgICBp
bnNlcnRTZWNvbmRTdGF0aXN0aWMoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc2V0VXBBbmRSdW4oKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKKyAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJ1
blRlc3RSdW5uZXJUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIm5vIHRlc3RSdW5uZXIiKTsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2Vz
LW92ZXJ3cml0ZS1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtb3ZlcndyaXRlLWRh
dGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGNmN2U4MGQ3OTkwZjgwNDQ3MDE0Yjdk
NWUyYmEwMjQyOTMyZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1k
YXRhYmFzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCBtZXJnZWQg
c3RhdGlzdGljIG92ZXJ3cml0ZXMgb2xkIHN0YXRpc3RpYworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBIb3N0IG92ZXJ3cm90ZSBvbGQgcHJldmFsZW50IHJlc291cmNlIHZh
bHVlLgorUEFTUyBIb3N0IG92ZXJ3cm90ZSBvbGQgdmVyeSBwcmV2YWxlbnQgcmVzb3VyY2UgdmFs
dWUuCitQQVNTIEhvc3Qgb3Zlcndyb3RlIG9sZCB1c2VyIGludGVyYWN0aW9uIHZhbHVlLgorUEFT
UyBIb3N0IG92ZXJ3cm90ZSBvbGQgZ3JhbmRmYXRoZXJlZCB2YWx1ZS4KK1BBU1MgSG9zdCBzZXQg
YXMgc3ViZnJhbWUgdW5kZXIgdG9wIGZyYW1lLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUt
ZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNDEyZTE1Y2M4MGY0ZTdhODNmNDE1NzgwMGQ3YzM0YjA4OWY0ODY0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21l
cmdlLXN0YXRpc3RpYy1kb2VzLW92ZXJ3cml0ZS1kYXRhYmFzZS5odG1sCkBAIC0wLDAgKzEsOTAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEg
Y2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0PmRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IG1lcmdlZCBzdGF0
aXN0aWMgb3ZlcndyaXRlcyBvbGQgc3RhdGlzdGljIik7PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InNldFRpbWVvdXQoJ3NldFVwQW5kUnVuKCknLCAwKSI+Cis8c2NyaXB0PgorICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29uc3QgdXJsID0gImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCI7CisgICAgY29uc3Qgc2FtcGxlVG9wRnJhbWVVUkwgPSAiaHR0cDovL3RvcEZyYW1l
RG9tYWluOjgwMDAiOworICAgIGNvbnN0IG9sZGVyVGltZXN0YW1wID0gTWF0aC5yb3VuZCgobmV3
IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMCk7CisgICAgY29uc3QgbmV3ZXJUaW1lc3RhbXAgPSBv
bGRlclRpbWVzdGFtcCArIDEwOworICAgIGNvbnN0IG1vc3RSZWNlbnRVSVRvVHJpZ2dlckZpcnN0
UGFydHlJbnRlcmFjdGlvbkNvdW50ID0gbmV3ZXJUaW1lc3RhbXAgKyA5MDAwMDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZnVuY3Rpb24gaW5zZXJ0U2Vjb25k
U3RhdGlzdGljKCkgeworICAgIAorICAgICAgICAvLyBzZXQgdGhpcyByZXNvdXJjZSBhcyBwcmV2
YWxlbnQgc28gaXQgaXMgaW4gdGhlIHN0YXRpc3RpY3Mgc3RvcmUKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc2FtcGxlVG9wRnJhbWVVUkwsIHRydWUs
IGZ1bmN0aW9uKCkgeworICAgICAgICAKKyAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0
aXN0aWNzTWVyZ2VTdGF0aXN0aWModXJsLCBzYW1wbGVUb3BGcmFtZVVSTCwgbmV3ZXJUaW1lc3Rh
bXAsIHRydWUsIG1vc3RSZWNlbnRVSVRvVHJpZ2dlckZpcnN0UGFydHlJbnRlcmFjdGlvbkNvdW50
LCB0cnVlLCB0cnVlLCB0cnVlLCAxLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgIGlm
ICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHVybCkpCisgICAgICAg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBvdmVyd3JvdGUgb2xkIHByZXZhbGVudCBy
ZXNvdXJjZSB2YWx1ZS4iKTsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IG5vdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIp
OworCisgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NWZXJ5UHJl
dmFsZW50UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJI
b3N0IG92ZXJ3cm90ZSBvbGQgdmVyeSBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuIik7CisgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9z
dCBub3Qgc2V0IGFzIHZlcnkgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
IGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbih1cmwpKQor
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3Qgb3Zlcndyb3RlIG9sZCB1c2Vy
IGludGVyYWN0aW9uIHZhbHVlLiIpOworICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFj
dGlvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIGlmICh0ZXN0
UnVubmVyLmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQodXJsKSkKKyAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJIb3N0IG92ZXJ3cm90ZSBvbGQgZ3JhbmRmYXRoZXJlZCB2YWx1ZS4i
KTsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJIb3N0IG5vdCBzZXQgYXMgZ3JhbmRmYXRoZXJlZC4iKTsKKworICAgICAgICAgICAgICAg
ICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcih1
cmwsIHNhbXBsZVRvcEZyYW1lVVJMKSkKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJIb3N0IHNldCBhcyBzdWJmcmFtZSB1bmRlciB0b3AgZnJhbWUuIik7CisgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBub3Qgc2V0
IGFzIHN1YmZyYW1lIHVuZGVyIHRvcCBmcmFtZS4iKTsKKworICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICBmdW5j
dGlvbiBydW5UZXN0UnVubmVyVGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzTWVyZ2VTdGF0aXN0aWModXJsLCAiIiwgb2xkZXJUaW1lc3RhbXAsIGZhbHNlLCAwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCAwLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHVybCkpCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiSG9zdCBnb3Qgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAg
ICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNl
KHVybCkpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBnb3Qgc2V0IGFzIHByZXZh
bGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHVybCkpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSG9zdCBnb3QgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOworICAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCh1
cmwpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZ290IHNldCBhcyBncmFuZGZh
dGhlcmVkLiIpOworCisgICAgICAgICAgICBpbnNlcnRTZWNvbmRTdGF0aXN0aWMoKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0VXBBbmRSdW4oKSB7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBE
YXRhYmFzZSh0cnVlKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIHJ1blRlc3RSdW5uZXJUZXN0KCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIm5vIHRlc3RS
dW5uZXIiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0
ZW50U3RhdGUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLXBhcnRpYWxseS1vdmVyd3JpdGUtZGF0YWJhc2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLXBhcnRpYWxseS1vdmVyd3JpdGUtZGF0YWJhc2UtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3MWU0NmI3OWM5MTU1ZWE4NzExOTBhMTYzMDMxOGU5ZGJl
ZGI3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvbWVyZ2Utc3RhdGlzdGljLWRvZXMtcGFydGlhbGx5LW92ZXJ3cml0ZS1k
YXRhYmFzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCBtZXJnZWQg
c3RhdGlzdGljIG92ZXJ3cml0ZXMgb2xkIHN0YXRpc3RpYworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBIb3N0IG92ZXJ3cm90ZSBvbGQgcHJldmFsZW50IHJlc291cmNlIHZh
bHVlLgorUEFTUyBIb3N0IG92ZXJ3cm90ZSBvbGQgdmVyeSBwcmV2YWxlbnQgcmVzb3VyY2UgdmFs
dWUuCitQQVNTIEhvc3QgZGlkIG5vdCBvdmVyd3JpdGUgb2xkIHVzZXIgaW50ZXJhY3Rpb24gdmFs
dWUuCitQQVNTIEhvc3Qgb3Zlcndyb3RlIG9sZCBncmFuZGZhdGhlcmVkIHZhbHVlLgorUEFTUyBI
b3N0IHNldCBhcyBzdWJmcmFtZSB1bmRlciB0b3AgZnJhbWUuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL21lcmdlLXN0YXRpc3RpYy1kb2VzLXBh
cnRpYWxseS1vdmVyd3JpdGUtZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1wYXJ0aWFsbHktb3Zl
cndyaXRlLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRkMTZkNjBiOGIwOTI0ZTI1ZjQxMzlj
MGY4ODgyYjQwMzAyZDA3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9tZXJnZS1zdGF0aXN0aWMtZG9lcy1wYXJ0aWFsbHkt
b3ZlcndyaXRlLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSw5MCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cisg
ICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQ+ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgbWVyZ2VkIHN0YXRpc3RpYyBvdmVyd3JpdGVzIG9s
ZCBzdGF0aXN0aWMiKTs8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91
dCgnc2V0VXBBbmRSdW4oKScsIDApIj4KKzxzY3JpcHQ+CisgICAganNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICBjb25zdCB1cmwgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25z
dCBzYW1wbGVUb3BGcmFtZVVSTCA9ICJodHRwOi8vdG9wRnJhbWVEb21haW46ODAwMCI7CisgICAg
Y29uc3Qgb2xkZXJUaW1lc3RhbXAgPSBNYXRoLnJvdW5kKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkg
LyAxMDAwKTsKKyAgICBjb25zdCBuZXdlclRpbWVzdGFtcCA9IG9sZGVyVGltZXN0YW1wICsgMTA7
CisgICAgY29uc3QgbW9zdFJlY2VudFVJVG9UcmlnZ2VyRmlyc3RQYXJ0eUludGVyYWN0aW9uQ291
bnQgPSBuZXdlclRpbWVzdGFtcCArIDkwMDAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICBmdW5jdGlvbiBpbnNlcnRTZWNvbmRTdGF0aXN0aWMoKSB7CisgICAg
CisgICAgICAgIC8vIHNldCB0aGlzIHJlc291cmNlIGFzIHByZXZhbGVudCBzbyBpdCBpcyBpbiB0
aGUgc3RhdGlzdGljcyBzdG9yZQorICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZShzYW1wbGVUb3BGcmFtZVVSTCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAg
ICAgIAorICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3Rp
Yyh1cmwsIHNhbXBsZVRvcEZyYW1lVVJMLCBuZXdlclRpbWVzdGFtcCwgZmFsc2UsIG1vc3RSZWNl
bnRVSVRvVHJpZ2dlckZpcnN0UGFydHlJbnRlcmFjdGlvbkNvdW50LCB0cnVlLCB0cnVlLCB0cnVl
LCAxLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKHVybCkpCisgICAgICAgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiSG9zdCBvdmVyd3JvdGUgb2xkIHByZXZhbGVudCByZXNvdXJjZSB2YWx1ZS4iKTsK
KyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJIb3N0IG5vdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworCisgICAgICAgICAgICAg
ICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UodXJs
KSkKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJIb3N0IG92ZXJ3cm90ZSBvbGQg
dmVyeSBwcmV2YWxlbnQgcmVzb3VyY2UgdmFsdWUuIik7CisgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBub3Qgc2V0IGFzIHZlcnkg
cHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odXJsKSkKKyAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJIb3N0IGRpZCBub3Qgb3ZlcndyaXRlIG9sZCB1c2VyIGludGVyYWN0
aW9uIHZhbHVlLiIpOworICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4iKTsK
KworICAgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzR3JhbmRmYXRo
ZXJlZCh1cmwpKQorICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3Qgb3Zlcndy
b3RlIG9sZCBncmFuZGZhdGhlcmVkIHZhbHVlLiIpOworICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IHNldCBhcyBncmFuZGZh
dGhlcmVkLiIpOworCisgICAgICAgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3Rp
Y3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHVybCwgc2FtcGxlVG9wRnJhbWVVUkwpKQorICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3Qgc2V0IGFzIHN1YmZyYW1lIHVuZGVy
IHRvcCBmcmFtZS4iKTsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJIb3N0IG5vdCBzZXQgYXMgc3ViZnJhbWUgdW5kZXIgdG9wIGZyYW1l
LiIpOworCisgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgfSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHJ1blRlc3RSdW5uZXJUZXN0KCkgewor
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyh1cmwsICIiLCBv
bGRlclRpbWVzdGFtcCwgZmFsc2UsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdvdCBzZXQgYXMg
cHJldmFsZW50IHJlc291cmNlLiIpOworCisgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UodXJsKSkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJIb3N0IGdvdCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworCisgICAgICAg
ICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24odXJs
KSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGdvdCBsb2dnZWQgZm9yIHVzZXIg
aW50ZXJhY3Rpb24uIik7CisgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodGVzdFJ1bm5l
ci5pc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKHVybCkpCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCBnb3Qgc2V0IGFzIGdyYW5kZmF0aGVyZWQuIik7CisKKyAgICAgICAgICAgIGlu
c2VydFNlY29uZFN0YXRpc3RpYygpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBzZXRVcEFuZFJ1bigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOworICAgICAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcnVu
VGVzdFJ1bm5lclRlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgibm8gdGVzdFJ1bm5lciIpOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>